За исключением поддержки нескольких аргументов, запрещающих сужение преобразования, сопоставления конструктора, принимающего аргумент std:: initializer_list, что еще отличается для инициализации списка копий от традиционной инициализации копирования?
Чтобы быть конкретным, предположим, что существуют два пользовательских типа, A
и B
:
class A {...};
class B {...};
B b;
A a1 = {b};
A a2 = b;
Какое определение A
и B
повлияет на эти две формы инициализации? например Есть ли определенное определение A
и B
, которое сделает одну из инициализации легальной, а другую незаконной или юридической, но с другой семантикой, или же незаконной с разными причинами?
(Предположим, что A
не имеет конструктора с аргументом std:: initializer_list.)
EDIT: добавление ссылки на несколько связанный с этим вопрос: Каково предполагаемое поведение инициализации списка копий в случае инициализатора с оператором преобразования?