Поскольку эта конструкция совершенно легальная
A a4((C()));
проблема в том, что вы используете инициализацию копирования. Действительно, ваш пример равен
A a4((A(C()));
8.5 / 16 Семантика инициализаторов следующая. Тип назначения - тип инициализированного объекта или ссылки, а тип источника - тип выражения инициализатора. Если инициализатор не является одним (возможно, в скобках) выражением, тип источника не определен. Если тип назначения является классом класса (возможно, cv-qualit): - В противном случае (то есть для остальных случаев инициализации копии) пользовательские последовательности преобразований, которые могут преобразовываться из типа источника в тип назначения или (когда конверсия функция используется) к их производному классу перечислены, как описано в 13.3.1.4, и лучший выбирается с помощью разрешения перегрузки (13.3).
13.3.1.4/1
Семантика инициализаторов следующие. Тип назначения - тип инициализированного объекта или ссылки, а тип источника - тип выражения инициализатора. Если инициализатор не является одним (возможно, в скобках) выражением, тип источника не определен.
Разрешение перегрузки используется для выбора пользовательского преобразования, которое нужно вызвать. Предполагая, что «cv1 T» является типом инициализированного объекта, с типом типа T, кандидатные функции выбираются следующим образом: - Конструкторы преобразования (12.3.1) of T являются кандидатными функциями.Если тип назначения является классом класса (возможно, cv-qualit):
В условиях, указанных в 8.5, как часть инициализации копии объекта типа класса, пользовательское преобразование может быть вызвано для преобразования выражения инициализатора в тип инициализированного объекта.
- Когда тип выражения инициализатора является типом класса «cv S», неявный функции преобразования S и его базовые классы.