Рассмотрим следующий код:
class Object
{
public:
// ...
private:
Something something;
}
Я хочу, чтобы Object предоставлял метод release(), название которого исчерпывающе описывает его семантику.
Например, мы могли бы написать нужный метод так:
Something&& release()
{
return std::move(something);
}
Или вот так:
Something release()
{
return std::move(something);
}
Есть ли какие-то отличия между двумя этими вариантами?
Я тысячи раз писал подобный код, но только сейчас задумался над тем, что же в действительности происходит.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей