LINUX.ORG.RU

История изменений

Исправление intelfx, (текущая версия) :

В C++ (как в Си — не знаю, скастовал вот человека) есть такая вещь, как copy elision: лишние копирования и перемещения могут быть опущены.

Эта оптимизация явно описана в стандарте (но не как требуемая). Более того, ей разрешено менять поведение программы. То есть, нельзя полагаться на то, что твой конструктор копирования или перемещения обязательно сработает. Компилятор имеет право оптимизировать так, что он не вызовется (хотя должен был бы) — кстати, crowbar.

Но если потребовать отключения вообще всех оптимизаций (не знаю, может ли так gcc) — то, естественно, структурка скопируется.

Исправление intelfx, :

В C++ (как в Си — не знаю, скастовал вот человека) есть такая вещь, как copy elision: лишние копирования и перемещения могут быть опущены.

Эта оптимизация явно описана в стандарте (но не как требуемая). Более того, ей разрешено менять поведение программы. То есть, нельзя полагаться на то, что твой конструктор копирования или перемещения обязательно сработает. Компилятор имеет право оптимизировать так, что он не вызовется (хотя должен был бы).

Но если потребовать отключения вообще всех оптимизаций (не знаю, может ли так gcc) — то, естественно, структурка скопируется.

Исходная версия intelfx, :

топикстартеру

В C++ (как в Си — не знаю, скастовал вот человека) есть такая вещь, как copy elision: лишние копирования и перемещения могут быть опущены.

Эта оптимизация явно описана в стандарте (но не как требуемая). Более того, ей разрешено менять поведение программы. То есть, нельзя полагаться на то, что твой конструктор копирования или перемещения обязательно сработает. Компилятор имеет право оптимизировать так, что он не вызовется (хотя должен был бы).