О конструкторах копии

Я просто объяснял ошибку, котора была получена вами: там вызывался КК. Ваши фантазии на тему у меня желания обсуждать нет.

Вопрос почему там вызывался именно КК, а не move-КК, очень легко гуглится, вы могли бы уже сами это давно сделать, а не разводить пространную дискуссию. Ответ: потому что в GCC не было реализации move-КК до версии 5.0 (которая ещё мало где установлена).

Не смотря на то, что в актуальных версиях компиляторов эта проблема решена, писать так значит писать на каком-то другом языке. Кроме того, это сломается на первом классе, у которого не будет ни КК, ни move-КК: поверьте, таких классов достаточно много. Это все классы, владеющие ресурсами (типа файлов), из библиотек, написанных до появления move.

1 лайк

Мне кажется, здесь нужно отделить две вещи.

  1. Стоит ли писать такую конструкцию. ИМХО, конечно нет.
  2. Вызов КК и МК. Считаю, что шпынять студентов за то, что они не додумались глянуть версию компилятора и вспомнить, а когда же эта фича появилась в g++, мне видится не правильным.

Эти две вещи нельзя разделять: если бы выполнялось первое, не пришлось бы думать про второе. Именно про первое я и «шпыняю» большую часть. Про второе я написал только то, что это гуглится. Но вы видимо прочли что-то другое.