Ответ 1
В С++ 11, если у вас есть не явный конструктор для класса A
, который имеет несколько параметров (здесь я использую A::A(std::string, int, std::string)
в качестве примера), вы можете инициализировать аргумент этого типа с инициализацией скобки
void foo(A a);
foo({"the", 3, "parameters"});
Аналогично, вы можете сделать то же самое с возвращаемыми значениями:
A bar() {
return {"the", 3, "parameters"};
}
Если конструктор, однако, explicit
, они не будут компилироваться. Следовательно, ключевое слово explicit
теперь имеет значение для всех конструкторов, а не только для конструкторов преобразования.