Здравствуйте, sergey_shandar, Вы писали:
_>По логике и по стандарту, см. ВНИМАТЕЛЬНО 12.8.8Автор: sergey_shandar
Дата: 13.08.04
, а то мы ходим по кругу. Преобразования типов здесь вообще ни при чем.
как это ни при чем ? а где компилятор должен взять это B? чтобы вызвать B(B) ?
c одной стороны ты требуешь побитового (memberwise) копирования (ссылаясь на стандарт), а с другой создаешь пользовательские конструкторы на разные случаи жизни. из этого следует 2 вывода:
1. ни о каком побитовом копировании речи уже не идет, т.к. мало ли что ты делаешь в конструкторе копирования (компилятор эб этом не знает).
2. определение B(C) прямо предписывает компилятору использовать конструктор B(C), если это самое С ему на вход подается. в данном контексте, если производный класс С, то использовать B(C), если любой другой, то использовать B(B). что компилятор послушно и делает