2015-05-29 19 views
2

只是想確定它實際上是一個bug,而我並沒有做錯什麼。它編譯與海灣合作委員會(MinGW的)罰款:VS2013:不能從一個size_t元素創建矢量

std::vector<size_t> a({1, 2}); // works 
std::vector<size_t> b({1}); // does not work 
std::vector<int> c({1}); // works 

錯誤:

error C2440: 'initializing' : cannot convert from 'initializer-list' to 'std::vector<std::seed_seq::result_type,std::allocator<char32_t>>' 
+0

這可能是一個錯誤。爲什麼不簡單地使用「{1,2}」呢? – vsoftco

回答

1

這可能是在VS2013中的錯誤,因爲我相信在該版本中添加初始化名單。需要注意的是,如果你省略()它似乎很好地工作:

std::vector<size_t> b{ 1 }; // works 

嘗試一些其他的變化產生了一些令人驚訝的結果太:

std::vector<size_t> b({ 1 });   // does not work 
std::vector<size_t> b1({ 1u });   // does not work 
std::vector<long> b2({ 1 });    // does not work 
std::vector<long> b3({ 1l });   // works 
std::vector<long long> b4({ 1l });  // does not work 
std::vector<unsigned int> b5({ 1u }); // does not work 
std::vector<size_t> b6{ 1 };    // works 
std::vector<unsigned char> b7({ 1 }); // does not work 
std::vector<unsigned char> b8({ 1u }); // works 
std::vector<unsigned short> b9({ 1 }); // does not work 
std::vector<unsigned short> b10({ 1u }); // works 
std::vector<unsigned int> b11({ 1u }); // does not work 
std::vector<int> b12({ 1u });   // works 
std::vector<int> b13({ 1l });   // works 

所有上述情況不拆除()編譯使其工作。