clang 3.1(trunk) に Initializer lists が実装された

[ソース]

#include <vector>
#include <iostream>


template<typename T>
void
disp(std::initializer_list<T> list){
    for(auto&& n : list){
        std::cout << n << std::endl;
    }
}

struct X{
    X() : elems{1, 2, 3}{}
    int elems[3];
};

int
main(){
    std::vector<int> v = {1, 2, 3, 4, 5};

    std::vector<std::vector<int>> vv = {
        {0, 1, 2},
        {3, 4, 5},
        {7, 8, 9}
    };

    disp({1, 2, 3});
    
    X x;
    for(auto&& n : x.elems){
        std::cout << n << std::endl;
    }

    return 0;
}

[出力]

1
2
3
1
2
3

昨日の今日ですが、clang 3.1(trunk) に Initializer lists が実装されたみたいです。
まだ全ての機能とはいいませんがこれでメジャーな言語機能はひと通り実装された感じですね。
次あたりにユーザ定義リテラルが実装されればゲフンゲフン。
llvm/clang のソースコードGIT mirror を使用しました。