Я имею в виду «The working draft N3337», который is said most similar to the published C++11 standard.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
В противном случае он будет использовать агрегатную инициализацию.
Теперь here пример использования 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
?
Я на 200% уверен, что это дубликат, но я не могу найти соответствующий Q/A. – Columbo
@Columbo: возможно [этот] (http://stackoverflow.com/q/9723164/179910)? –
@JerryCoffin Бинго, спасибо! – Columbo