編譯應該是一個簡單的代碼行時,我收到了一個來自Clang的奇怪錯誤。錯誤的std ::向量構造函數
此代碼產生一個錯誤:
size_t s = 5;
std::vector<double> bestScores{s, -1.0};
我只是試圖用constructor #2,以填補新的矢量五個-1.0值。我得到的錯誤是在初始化程序列表中,非常量表達式不能從類型'size_type'(又名'unsigned long')縮小爲'double'。
這是怎麼回事?這編譯罰款:
std::vector<double> bestScores{5, -1.0};
它試圖使用初始化程序列表構造函數?我以爲你需要兩個花括號:
std::vector<double> bestScores{{5, -1.0}};
你並不需要初始化列表構造兩個花括號,除了'的std :: array'的混亂和過時的原因。 –
@MooingDuck那一定是我想到的。謝謝 –
也許你應該閱讀[C++ 11 - Uniform initialization](http://en.wikipedia.org/wiki/C++11#Uniform_initialization),特別是最後兩段。 –