・Angle bracket
テンプレートの連続した山カッコの問題の解決
・初期化子リスト
ユーザー定義のクラスで配列のような初期化構文を実装可能になる
・Uniform initialization
コンストラクタの構文と初期化子リストの構文が一様になる
・デリゲーティング・コンストラクタ
コンストラクタから他のコンストラクタを呼び出せる
・auto
型推論
・記憶クラス指定子としての auto の削除
autoキーワードの意味が変更になるため、下位互換がなくなる
・decltype
sizeofの型版
・Template Aliases
テンプレートを使用して型の別名を付けることができる。いわゆるtemplate typedef
・拡張sizeof
構造体/クラスのメンバをインスタンス化せずにsizeofすることが可能になる
・nullptr
ヌルポインタを表すキーワード追加
・char16_t, char_32_t, raw string literal, UTF-8リテラル, 文字列リテラル中のユニバーサルキャラクタ名
文字列関係。UTF-8/16/32, エスケープシーケンス無視
・右辺値参照・ムーブセマンティクス(std::move, std::forward)
一時オブジェクトのコストをなくし(減らし)、完璧な転送を実現する
・メンバ関数のlvalue/rvalue修飾
オブジェクトが左辺値の場合のみ呼べるメンバ関数、右辺値の場合のみ呼べる関数
・コンセプト(late_check, Axiom)
テンプレートのエラーメッセージを改善し、テンプレートの多くの手法を言語で総括的にサポートする
・Range-base for文
コンテナ, 配列をループするための新たなfor文
・static_assert
コンパイル時アサート
・ラムダ式
匿名関数オブジェクトを生成するための式
・Variadic Templates, Variadic Template Template Parameters
可変引数テンプレート
・Strongly Typed Enums
スコープと強力な型付けを持ったenum
・メンバ初期化子(auto許可?)
メンバ変数の新たな初期化
・Defaulted and Deleted Functions
コンパイラが自動的に生成する関数の制御
・explicit conversion
明示的な型変換
・explicit bool
"conversion to unspecified bool"というイディオムを言語でサポート
・Default template arguments for function templates
関数テンプレートのデフォルトテンプレート引数
・新たな関数宣言構文, 統一された関数宣言構文(?)
戻り値の型を後置する関数宣言構文
・継承コンストラクタ
派生クラスで基本クラスのコンストラクタを使用できる
・ユーザー定義リテラル
サフィックスを自作することができる。例えば2進数リテラル
・Extern Template
潜在的なテンプレートのインスタンス化を抑制
・inline namespace
透過的な名前空間
・拡張friend宣言
テンプレートパラメータとtypedef名をfriendにすることができる
・alignof
アライメントの指定と取得
・無制限Union
共用体(union)でクラスオブジェクトを持てる
・thread_local
スレッドローカル記憶域
・ローカル型と無名型をテンプレート引数として使用
関数内で作成したクラスのオブジェクトをvectorに保持したりできる
・POD再考
POD型の定義を見直し
・SFINAE問題の解決
今まであいまいだったSFINAEの仕様を明確化
・一般化された属性
コンパイラごとに存在する属性構文(__declspec, __attribute__, etc...)を一般化
・暗黙に削除される特殊メンバ関数
デフォルトコンストラクタ、(以下略)が暗黙に定義されるとエラーになるクラスでは、delete扱いにする
・ガベージコレクションと到達可能性ベースリーク検知の最小支援
GCの最低限の決めごと
・C99対応
long long intとか可変引数マクロとか
・最低限推奨される数
テンプレートの再帰数とか
ライブラリ
・TR1(Technical Report 1)
主にBoostから移植されるライブラリ群(スマートポインタ, 乱数生成器, 正規表現...)
・unordered_map / unordered_set
ハッシュ表
・chrono
日付/時間ライブラリ
・thread
スレッドライブラリ
・forward_list
単方向リスト
・More STL Algorithm
追加されるSTLアルゴリズム
・Placement Insert
コンテナに要素を追加する際、コピーのコストをなくす
・system_error
OS固有のエラー情報を取得する
・エラーハンドリング設計のガイドライン
system_errorを使用したエラー通知の設計
・Scoped Allocator Model
コンテナ内のコンテナの各要素にアロケータを指定できる
・enable_if
コンパイル時条件によるオーバーロード
・Numeric Convertion
basic_stringと数値の相互変換(to_string, stoi, etc...)
・可変引数min/max/minmax
initializer_listによるmin/max/minmax関数
・default_random_engine
デフォルトの乱数生成器型
・is_sorted
範囲がソート済みか判定するアルゴリズム
・vector::data, shrink_to_fit
std::vectorに追加されるメンバ関数
・map::at
map::operator[] constの代わり
・cbeginとcend
const_iteratorを返すbegin()とend()
・Shared_ptr atomic access
shared_ptrの排他アクセス
・コード変換
wstring/stringの変換
・std::type_index
連想配列のキーにtype_infoを使用
・IOマニピュレータ
hexfloatとdefaultfloatを追加
・標準コンテナのsize()の計算量を規定
size()メンバ関数の計算量をO(1)にする
・ファイルの位置操作で現代的なファイルサイズを扱えるようにする
・std::addressof
operator&がオーバーロードされた型の変数に対してもアドレスを取得できる
・標準ライブラリのconstexpr対応
とりあえずデフォルトコンストラクタのみ
あとで消す
noncopyable