C++0xでは、初期化子リストの型はstd::initializer_list
#include <type_traits> #include <initializer_list> using namespace std; int main() { auto a = {1, 2, 3}; typedef decltype(a) left; typedef initializer_list<int> right; static_assert(is_same<left, right>::value, "not same"); // OK }
ただし、配列の初期化の場合には従来どおりTの配列になります。
ちなみに、autoを配列にすることはできません。
auto a[] = {1, 2, 3}; // エラー!