Здравствуйте, Bork, Вы писали:
_>>По логике и по стандарту, см. ВНИМАТЕЛЬНО 12.8.8Автор: sergey_shandar
Дата: 13.08.04
, а то мы ходим по кругу. Преобразования типов здесь вообще ни при чем.
B>как это ни при чем ? а где компилятор должен взять это B? чтобы вызвать B(B) ?
B>c одной стороны ты требуешь побитового (memberwise) копирования (ссылаясь на стандарт), а с другой создаешь пользовательские конструкторы на разные случаи жизни. из этого следует 2 вывода:
Это такой способ издеваться? Перевожу:
12.8.8.
Неявный конструктор копирования для класса X (в нашем случае C) выполняет копирование его составляющих (причем здесь побитовое копирование bitwise copy?). Порядок копирования такой же как и порядок инициализации баз (или наследуемых классов, как Вам больше нравиться) и членов (мемберов, полей и т.п.) в определенном пользователем конструкторе (см. 12.6.2). Каждый такая составляющая копируеться в соответствии с её типом:
— если это class (как в нашем случае B), то используеться
конструктор копирования этого класса (т.е. B::B(const B &), а не B::B(const C&)).
— если это массив, то каждый элемент этого массива копируеться в соотвествии с его типом.
— если это скалярный тип, то вызываеться встроенный оператор присваивания.
Все....