Я хотел бы вернуть некопируемый объект типа Foo
из функции . По сути, это вспомогательный объект, который вызывающий будет использовать для выполнения набора действий, с деструктором для выполнения некоторой очистки после завершения действий.
До появления ссылок на rvalue я бы имел вернул shared_ptr
или что-то подобное. При использовании ссылок rvalue другим вариантом было бы сделать конструктор и конструктор копирования закрытыми, а единственным общедоступным конструктором был конструктор перемещения. Foo
будет выглядеть примерно так:
class Foo : boost::noncopyable
{
private:
Foo( /* whatever the real ctor needs */ );
public:
Foo( Foo && src );
// ... interesting stuff ...
};
Foo a( SomethingThatReturnsFoo() ); // allowed
Foo b; // error, no public default constructor
Foo c( a ); // error, noncopyable
Foo d = a; // error, noncopyable
Мой вопрос в том, будет ли это плохим тоном или выглядит разумным. Я могу' Я не думаю о какой-либо причине, по которой это могло бы вызвать проблемы или затруднить чтение, но я все еще в некоторой степени новичок, когда дело касается ссылок на rvalue, поэтому могут быть соображения, о которых я не думаю.