За исключением поддержки нескольких аргументов, запрещающих сужение преобразования, сопоставления конструктора, принимающего аргумент 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: добавление ссылки на несколько связанный с этим вопрос: Каково предполагаемое поведение инициализации списка копий в случае инициализатора с оператором преобразования?
