C++0x Uniform initialization

std::initializer_list の追加にともない
コンストラクタと初期化子リストの初期化構文が一様になる


以下のようなクラスがあった場合

class hoge {
    int x_;
    int y_;
public:
    hoge(int x, int y)
        : x_(x), y_(y) {}
};


以下の2行は同じ意味になる

hoge h(3, 4);
hoge h{3, 4};


引数

void foo(const hoge&){}

foo({3, 4});


戻り値

hoge something()
{
    return {3, 4};
}


std::initializer_list を引数にとるコンストラクタが優先的に呼ばれる



N2532 Uniform initialization design choices (Revision 2)

初期化子リスト(Initializer List)

C++0x言語拡張まとめ