我在编译一行看似简单的代码时,Clang报出了一个奇怪的错误。
以下代码会产生错误:
size_t s = 5;
std::vector<double> bestScores{s, -1.0};
我想使用构造函数#2来用五个-1.0值填充一个新的向量。我得到的错误是“非常量表达式不能从类型 'size_type'(又名 'unsigned long')缩小为' double '在初始化器列表中。”发生了什么?以下代码编译良好:
std::vector<double> bestScores{5, -1.0};
它是否试图使用初始化列表构造函数?我以为您需要两个花括号:
std::vector<double> bestScores{{5, -1.0}};
std::array
因为混淆和陈旧的原因,初始化列表构造函数不需要两个花括号。 - Mooing Duck