Я хочу пояснить, что конструктор моего класса A
будет владеть переданным параметром Data
. Очевидно, что нужно сделать unique_ptr
по значению:
class A
{
public:
A(std::unique_ptr<Data> data) : _data(std::move(data)) { }
std::unique_ptr<Data> _data;
};
Однако для моего прецедента нет причин, по которым Data
должен быть указателем, так как будет достаточно типа значения. Единственный оставшийся вариант, о котором я мог подумать, чтобы действительно понять, что Data
будет принадлежать A
, является pass by rvalue-reference:
class A
{
public:
A(Data&& data) : _data(std::move(data)) { }
Data _data;
};
Является ли это допустимым способом сигнализировать владение или есть ли лучшие варианты для этого, не используя unique_ptr
?