タグ

C++11に関するy_uukiのブックマーク (19)

  • スマートポインタの使い方 その1:unique_ptr - C++Builder好きの秘密基地

    スマートポインタって何? C++において、operator newでメモリ領域(ヒープ領域)を動的に確保した場合、その領域はoperator deleteでプログラマが責任を持って解放してやらなければならない。しかし、deleteを書き忘れたり、例外が発生したときの処理を怠った場合など、それが正しく行われないことはよくある。正しく解放されなかった領域はOSやプロセスが使用可能なメモリ領域を「不正占拠」し、それが積もり積もると、OSやプロセスが停止する場合がある。 #include <memory> class Mess {}; void f(Point p1, Point p2) { Rectangle* r(new Rectangle(p1, p2)); r->rotate(45); // 矩形を45度回転 // ... if (in_a_mess) throw Mess(); // 例

    スマートポインタの使い方 その1:unique_ptr - C++Builder好きの秘密基地
  • C++11の時間ライブラリは美しさを追求したあまり、かえって使いにくくなっているのではないか

    C++11の時間関係のライブラリは、非常に美しい設計をしている。 まず、経過時間そのものを表すdurationがある。Cライブラリでいえば、time_tの値の単位を指定するクラスだ。Cライブラリでは、time_tの値は秒であったが、C++では、単位を指定できるのだ。 durationでは、単位ライブラリであるratioを使って、秒、ミリ秒、マイクロ秒などといった時間単位を表現している。 秒 std::chorno::seconds ミリ秒 std::chrono::milliseconds ナノ秒 std::chrono::nanoseconds 時 std::chrono::hours それ以外の、独自の刻みがほしいとしても、簡単に作成できる。 4分33秒 using four_minutes_thirty_three_seconds = std::chrono::duration< l

    y_uuki
    y_uuki 2013/05/19
  • C++11 の機能(BCC64) - RAD Studio XE3

    y_uuki
    y_uuki 2013/05/05
  • ClangがC++11を完全実装! 繰り返す、C++11を完全実装

    [Phoronix] LLVM's Clang Compiler Is Now C++11 Feature Complete C++11 support is now feature-complete. · e6e68b5 · llvm-mirror/clang · GitHub 3時間前のコミットにより、Clangは晴れてC++11規格を完全に実装した。その通り、完全にすべて実装した。 コミットは、Inheriting Constructorsとthread_localの機能を有効にする変更だ。 もちろん、まだ実装にバグは残っているだろうし、規格上のバグもあるので、開発に終わりはない。ただし、今日は記念すべき日である。 static_puts said... そうすると、ますますC++11の重要性が高まってきますね! 「寄付のお願い」の方にも書かせていただいたのですが、書籍の執筆への寄

  • Page Redirection - GNU Project

    This page has been incorporated into another. If you are not redirected automatically, click here. For questions related to the use of GCC, please consult these web pages and the GCC manuals. If that fails, the gcc-help@gcc.gnu.org mailing list might help. Comments on these web pages and the development of GCC are welcome on our developer list at gcc@gcc.gnu.org. All of our lists have public archi

  • https://github.com/facebook/folly/blob/master/folly/docs/Overview.md

    https://github.com/facebook/folly/blob/master/folly/docs/Overview.md
  • C++0x ラムダ式 - Faith and Brave - C++で遊ぼう

    【2015年12月24日記載 : C++11 ラムダ式の正式なまとめは、こちらのページ「C++11 ラムダ式 - cpprefjp C++語リファレンス」を参照してください】 今まではラムダ式のリビジョンが上がるたびに差分だけ書いてたので C++0xに採択されたラムダ式の解説をあらためて書きます。 【C++03までの問題点】 C++03では、関数をその場で作成する、ということができなかったため 関数を受け取るSTLアルゴリズムを使用する場合、以下のように、アルゴリズムに渡す用の関数を作成しなければなりませんでした。 struct is_even { typedef bool result_type; bool operator()(int x) const { return x % 2 == 0; } }; vector<int> v; find_if(v.begin(), v.end

    C++0x ラムダ式 - Faith and Brave - C++で遊ぼう
    y_uuki
    y_uuki 2012/06/08
  • Intel TBB 4.0のC++11対応状況 - yohhoyの日記

    Intel TBB(Threading Building Blocks) 4.0では、C++11で追加された新機能との親和性向上や、新しいC++標準ライブラリ互換APIの提供が行われている。 C++11標準ライブラリ互換APIの提供 TBB 4.0ではC++11標準ライブラリとの前方互換性のために、新しく追加されたC++標準ライブラリ互換APIをいくつか提供する。TBB提供のC++11互換ヘッダをincludeすると、それぞれ名前空間 std に下記の識別子が導入される。 ヘッダ tbb/compat/condition_variable defer_lock_t, try_to_lock_t, adopt_lock_t 構造体 defer_lock, try_to_lock, adopt_lock 定数 lock_guard, unique_lock クラステンプレート swap 特殊化

    Intel TBB 4.0のC++11対応状況 - yohhoyの日記
  • 久々にC++使ったら進化してて素敵になってた件 – taichino.com

    最近、数年ぶりにC++を触っているのですが、いつの間にかかなり使いやすくなっていました。まだ全容は把握できてないのですが、とりあえず印象に残った以下の項目について書いてみたいと思います。 BOOST_FOREACHとautoですっきりループ tupleで無くなる無駄な構造体 #pragma onceで楽々インクルードガード std::functionとlamda関数でコンパクトなコード typeidでリフレクション 主にC++0x周りの話だと思っていますが、勘違いしている可能性も高いです。 前置きですが、エントリ内のコードはすべてgccの4.5.0で動作確認を行っています。(mac portのgcc45パッケージをインストールしました)。またビルド時にはc++0xの使用を明示する必要があります。 $ g++-mp-4.5 -std=c++0x main.cpp 1. BOOST_FORE

  • Template Aliases - meryngii.neta

    C++11 Advent Calenderの26日目の記事です。 クリスマスまで残り365日と迫りましたね。C++11 Advent Forever. さて、C++11で導入された機能の一つがTemplate Aliasesです。元々はTemplate Typedefなどとも呼ばれていました。他の主要な機能と比べて大して目立っていないですが、細かいポイントがいくつかあるような気がします。 Template Aliasesとは? C言語でもtypedefを使えば型に好きな別名を付けることができます。C++のクラスも型ですからtypedefできます。ではテンプレートクラスはどうかというと、C++03まではそのままの名前で使うしか無かったのです。Template Aliasesならテンプレートに別名を与えることができます。そう、C++11ならね。 template <typename T> us

    Template Aliases - meryngii.neta
  • 関数テンプレートに対するデフォルトテンプレート引数の使い方 - 野良C++erの雑記帳

    この記事は、新しい使い道が発見され次第、随時更新していく予定です。 はじめに C++0x では、関数テンプレートに対し、デフォルトのテンプレート引数を渡すことが出来るようになりました: http://d.hatena.ne.jp/faith_and_brave/20071105/1194259443 // 上記 URL から転載 template <class T, class U = double> void f( T t = 0, U u = 0 ); void g() { f(1, 'c'); // f<int,char>(1,'c') f(1) // f<int,double>(1,0) f(); // error: T cannot be deduced f<int>(); // f<int,double>(0,0) f<int,char>(); // f<int,char>(0

    関数テンプレートに対するデフォルトテンプレート引数の使い方 - 野良C++erの雑記帳
    y_uuki
    y_uuki 2012/05/30
  • Objective-C++11 - 星一のはてなブログ

    この記事は Mac Dev JP Advent Calendar の参加記事 (6 日目) です。 はじめに この記事では、 Objective-C++C++11 を使用する例について紹介します。 Objective-C++ とは Objective-C++ は、プログラミング言語 Objective-C と C++ とを多重継承したような言語です。お互いの文法がかち合わないので、混在することができます。極稀に文法がコンフリクトしますが、個人的にはそれで困ったことはありません。文法的にほぼ直交し、お互いのオブジェクトを単なるポインタ値とみなしているため、混在させることができるのです。 Objective-C と C++ の機能をオーバーラップさせるようなことはできません。例えば、 Objective-C のクラスを C++ で継承したりするようなことはできません。 Objective

    Objective-C++11 - 星一のはてなブログ
  • LLVM 3.1/Clang 3.1登場、C++11のコア機能をほぼサポート | OSDN Magazine

    LLVM開発チームは5月22日、コンパイラ環境「LLVM(Low Level Virtual Machine) 3.1」を公開した。同時にC/C++フロントエンドの「Clang 3.1」もリリースされている。リリースではC++11のサポートが強化され、ほぼすべての機能に対応した。 LLVMはコンパイラを実装するためのインフラストラクチャを提供するもので、コアとなる「LLVM Core」と、LLVM Coreを使用する「Clang」などのコンパイラフロントエンド、オプティマイザや各種ライブラリなどから構成されている。 LLVM 3.1は約6ヶ月に渡る開発期間を経てのリリースとなった。大きな特徴としては、C/C++向けの高速なメモリエラー検出「AddressSanitizer」の導入、MachineInstrのバンドルがある。また、ARMマクロアセンブラの統合によりARMコンパイルが高速化し

    LLVM 3.1/Clang 3.1登場、C++11のコア機能をほぼサポート | OSDN Magazine
    y_uuki
    y_uuki 2012/05/29
  • C++0xの言語拡張まとめ(※随時更新) - Faith and Brave - C++で遊ぼう

    C++0xの概要はこちら ・Angle bracket テンプレートの連続した山カッコの問題の解決 ・初期化子リスト ユーザー定義のクラスで配列のような初期化構文を実装可能になる ・Uniform initialization コンストラクタの構文と初期化子リストの構文が一様になる ・デリゲーティング・コンストラクタ コンストラクタから他のコンストラクタを呼び出せる ・auto 型推論 ・記憶クラス指定子としての auto の削除 autoキーワードの意味が変更になるため、下位互換がなくなる ・decltype sizeofの型版 ・Template Aliases テンプレートを使用して型の別名を付けることができる。いわゆるtemplate typedef ・拡張sizeof 構造体/クラスのメンバをインスタンス化せずにsizeofすることが可能になる ・nullptr ヌルポインタを表

    C++0xの言語拡張まとめ(※随時更新) - Faith and Brave - C++で遊ぼう
  • gccにconstexprが実装された

    GCC 4.6に、constexprが実装された。constexprについては、特に難しいことはない。単に、関数やクラスを、コンパイル時定数にできるというだけの話である。ともかく、せっかくなので使ってみる。この機能は、細々と解説するより、実際にコードを示したほうが分かりやすいであろう。 まずは、constexprな変数である。 int main() { constexpr int a = 0 ; // OK int value = 0 ; constexpr int b = value ; // エラー const int c = value ; // OK } constexpr指定された変数は、必ずコンパイル時定数になる。変数の初期化子は、定数式でなければならない。constとの違いは、constはコンパイル時定数でなくてもよいのである。constは、初期化子が定数式の場合、定数式にな

  • C++11 (他) 入門

    C++11 (他) 入門 1. C++11 (他) 入門 ~ Java, C, +αを学んだ貴方へ(というのは真っ赤な嘘) Yuta Hirokawa, @krustf/総長1 2012/2/15 2. 内容, 注意 Effective C++ の重要そうな部分を独断で抜き出し C++11 の規格で直結しそうな機能を幾つか紹介 テンプレートに関するテクニックを少々解説 最新規格 C++11(旧称C++0x) に則る  ウェブページや書籍では未だC++0x表記による情報が多い 検索時は気を付けること 2 導入 2012/2/15 3. 注意 C++11 完全対応コンパイラは未だ無い  2012年2月14日現在 当スライドでは以下の環境を使用する 一部以下の環境では使えないコードがある(かも) Compiler gcc 4.5 Build Option -std=gnu++0

    C++11 (他) 入門
  • Range を使おう - iorate's blog

    これは C++11 Advent Calendar 2011 の参加記事 (15日目) です. この記事では「Iterator ではなく Range を使おう」という話をします.既に何度も言われている話ではありますが,私も一度書いてみたかったのでこの機会に書きます.でもそんなに新しいことは言わないと思います. 話の流れとしては,従来の Iterator にはこんな欠点が → それ Range ならうまく書けるよ → さらに Range 使ってこんなこともできるよ → C++11 での Range という感じになります. 従来の Iterator の問題点 Iterator は STL の主要なコンセプトで,Container と Algorithm を橋渡しする役割を持っています. std::vector<int> v = { 8, 4, 3, 7, 6, 5, 2, 1 }; std::

    Range を使おう - iorate's blog
  • C++11時代におけるクラスの書き方 - イグトランスの頭の中

    記事は、C++11 Advent Calendar 2011 : ATNDの2日目の記事です。 C++のclassは様々な使い方ができます。後発のほかの言語ではいくつもの概念に分かれているものも、C++ではすべてclassということもあります。 そこで、C++でclassを定義する際も、classと一括りにせず、自分がいったいどんなclassを書こうとしているのか明確に意識するとよいのではないだろうかと考えました。そのために、私なりのclassの分類をまとめ、この記事を書くことにしました。 これは、各々のプログラミング言語の経験により違いが出ることと思います。異論もあると思いますので、ご自身でも考えてみるとよいと思います。 以下、この記事では4種類に分類しています。 1つ目は「オブジェクト指向プログラミング (OOP) を実現するクラス」です(長いので以下OOPクラスと略します)。 vi

    C++11時代におけるクラスの書き方 - イグトランスの頭の中
  • Elements of Modern C++ Style

    C++11 feels like a new language.” – Bjarne Stroustrup The C++11 standard offers many useful new features. This page focuses specifically and only on those features that make C++11 really feel like a new language compared to C++98, because: They change the styles and idioms you’ll use when writing C++ code, often including the way you’ll design C++ libraries. For example, you’ll see more smart poi

    Elements of Modern C++ Style
  • 1