Для возврата unique_ptr не используйте перемещение
Проблема: снижение производительности
Не нужно использовать std::move при возврате std::unique_ptr и других некопируемых классов. Компилятор сам все сделает, да еще и с оптимизациями (RVO):
Неправильно:
std::unique_ptr<int> get_unique() {
auto ptr = std::make_unique<CMyClass>();
// do something
return std::move(ptr); // Плохо
}
// Использование
auto int_uptr = get_unique();
Правильно: