Компилятор выполняет копирования Пропуска, который разрешен в соответствии с пунктом 12.8/31 C++ 11 Standard четной, если ваш ход конструктор, конструктор копирования, или деструктор имеют побочные эффекты:
Когда определенные критерии выполнены, реализации разрешено опускать конструкцию копирования/перемещения объекта класса , даже если конструктор, выбранный для операции копирования/перемещения и/или деструктор для объекта , имеет побочные эффекты.
Термин копия элизия используется даже тогда, когда движение идет опущены:
Это элизия копирования/перемещения операций, называется копия элизия, допускается в следующих случаях (которые могут быть объединены для устранения нескольких копий ):
[...]
- когда объект временного класса, который не был привязан к ссылке (12.2), будет скопирован/перемещен объекту класса с тем же CV-неквалифицированным типом, операция копирования/перемещения может быть опущена , объект непосредственно в мишень опущенным копирования/перемещения
[...]
с GCC, вы можете использовать -fno-elide-constructors
для подавления копирования Пропуска. В этом случае вы увидите, что вызывает конструктор перемещения, как в этом live example.
Возможный дубликат [C++ 11 move constructor не вызывается, предпочтительный конструктор по умолчанию] (http://stackoverflow.com/questions/13099603/c11-move-constructor-not-called-default-constructor-preferred) – jogojapan