Чтобы собрать воедино некоторые ответы более явно, как упомянул @ Jarod42, даже если удаление копии должно было произойти, конструктор копирования / перемещения, который должен быть исключен, все еще должен существовать. Во-вторых, я забыл, что параметр, который я передаю, является значением r, поэтому он вызовет конструктор перемещения, если его нужно «скопировать». Так что скопируйте elision или нет, пример кода верен, потому что std::unique_ptr
имеет конструктор перемещения, и я передаю rvalue. Этот другой ответ довольно полный.