g++でC++0xをいじってみようかと思ったけど混乱してきたので俺用まとめ
参考資料1(Wikipedia)
参考資料2(GCCの対応状況)
参考資料3(C++0x新フィーチャの解説)
GCC4.3で対応済みのもの
- 右辺値参照(Rvalue references)
これはライブラリ作る時に使う程度かな。パフォーマンス改善用 - Static assertions (@Wikipedia)
コンパイル時アサート。 - Declared type of an expression
変数の型を返す演算子。sizeofはサイズを返し、decltypeは型を返す。そんな感じ。
型推論実装されないと使いにくくない? - Right angle brackets (@Wikipedia)
templateが入れ子になった時に右が>>で終わるっても右シフト演算子扱いされなくなった。やるのが10年おせえよ。 - Default template arguments for function templates
関数テンプレートにデフォルト引数が取れるようになる - SFINAE問題の解決(Solving the SFINAE problem for expressions)
よくわかりません - Extern templates (@Wikipedia)
ヘッダファイルで毎回実体化されるのを抑制し、(普通の関数のように)ソースファイルで実体化する
GCC4.4から対応しているもの
- 可変引数テンプレート(Variadic templates) (Extending variadic template template parameters) (@Wikipedia)
これもライブラリ作る時に欲しかったよね。従来ならマクロ地獄にして逃げてた奴だ - 初期化リスト(Initializer lists) (@Wikipedia)
これは便利。というかほんと今まで出来なかったのがおかしい - 強い型付けの列挙型(Strongly-typed enums) (@Wikipedia)
enumの代わりにenum classと書くことで、int型との暗黙キャストやらを防ぐことができる - Defaulted and deleted functions
- Inline namespaces
ブランチ版で実装中のもの
- ラムダ式(Lambda expressions and closures) (@Wikipedia)
boostのラムダは勉強する気もしないので早くお願いします - コンセプト(Concepts) (@Wikipedia)
未実装の(面白そうな)もの
- 型推論(
auto
-typed variables) (@Wikipedia)
超つかいまくるので早く欲しいです - ヌルポインタ定数(Null pointer constant) (@Wikipedia)
ヌルポインタにNULLマクロを使う悪しき風習を打破すべくnullptrという定数が追加される。NULLって書くの全部やめたいので早く追加して下さい
それ以外
- Template aliases (@Wikipedia)
usingを使ってtemplateに別名が付けられるようになる。template版のtypedef - Generalized constant expressions (@Wikipedia)
定数式の前にconstexprを付けることで定数式であることが保証できる(静的アサートに使ったり最適化したり?) - Inheriting constructors
ベースクラスに引数転送するだけのコンストラクタが簡単に書ける - Alignment support
アラインメントの管理。とりあえず興味無し - Delegating constructors
コンストラクタから別のコンストラクタが呼べる(丸投げが少しやりやすくなる) - Explicit conversion operators (@Wikipedia)
コンストラクタだけでなくキャスト演算子にもexplicitが指定出来るようになる(暗黙キャストを禁止できる) - New character types
マルチバイト文字型。UTF16とかUTF32とか用。 - UTF8リテラル raw string リテラル (@Wikipedia)
- Extended PODs (@Wikipedia)
- Initialization of class objects by rvalues
- Extended friend declarations
- Extending
sizeof
Universal character name literals
- Unrestricted unions
- Local and unnamed types as template arguments
- Minimal support for garbage collection and reachability-based leak detection
わんくま名古屋#5のアンケート
わんくま名古屋#5のアンケート