【发布时间】:2013-01-07 06:20:47
【问题描述】:
可能重复:
When can outer braces be omitted in an initializer list?
我在 Visual Studio 2010 中使用 std::array,实际上是 std::tr1::array,我遇到了一个烦人的问题。例如,我有一个以array 作为参数的函数。
void do_something(std::tr1::array<int, 5> data)
调用像do_something({1,2,3}); 这样的函数不起作用并导致编译器错误,但是
std::tr1::array<int, 5> data = {1,2,3};
do_something(data);
确实如此。我真的不明白为什么前者不起作用。我得到的错误告诉我我在{ 之前缺少)。这让我相信它不需要初始化列表,但我不明白为什么不这样做。我是否滥用了初始化列表?
编辑:std::tr1::array 不是必需的,std::array 工作正常..
【问题讨论】:
标签: c++ c++11 initializer-list