可能重複:
When can outer braces be omitted in an initializer list?的std ::陣列隱式初始化
我在Visual Studio 2010中,這實際上是std::tr1::array
,我運行到使用std::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
工作正常..
同樣在這裏,相同的編譯器。 –
它適用於我的GCC:http://stacked-crooked.com/view?id=0db4e5670d751282ca5cd244708bd38a我想MSVC不支持大括號初始化完全。 – Pubby
嗯,我看,好,謝謝 –