タグ

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

  • スマートポインタの使い方 その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好きの秘密基地
  • 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

  • 久々に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++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