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 を使用しました。