我是一个有用的助手,可以翻译文本。
我正在参考 "工作草案 N3337",据说它与已发布的 C++11 标准最相似。
如果存在可匹配的构造函数,则调用构造函数。
否则,它将使用聚合初始化。
现在,这里 是一个使用
我正在参考 "工作草案 N3337",据说它与已发布的 C++11 标准最相似。
如果存在可匹配的构造函数,则调用构造函数。
Example (p200):
struct S {
// no initializer-list constructors
S(int, double, double); // #1
S(); // #2
// ...
};
S s1 = { 1, 2, 3.0 }; // OK: invoke #1
S s2 { 1.0, 2, 3 }; // error: narrowing
否则,它将使用聚合初始化。
现在,这里 是一个使用
vector
的示例,它具有从 size_t
显式构造函数和一个 initializer_list
构造函数:vector<double> v1(7); // ok: v1 has 7 elements
vector<double> v1{7}; // ok: v1 has 1 element (with its value 7.0)
在这里我很困惑。为什么vector
的构造函数的行为与S
的构造函数不同?