У меня есть неподвижный и некопируемый тип:
struct A
{
A(std::string p1, int p2){}
A(A const &) = delete;
A(A&&) = delete;
A& operator=(A const &) = delete;
A& operator=(A&) = delete;
};
Я могу создать необязательный boost следующим образом:
boost::optional<A> op(boost::in_place("abc", 5));
Мне также нужно инициализировать boost::optional<A>
, который является членом класса. Вот мое решение:
class B
{
public:
B(const boost::optional<A>& op): op_(op) {}
private:
const boost::optional<A>& op_;
};
B b(boost::optional<A>(boost::in_place("abc", 5)));
Можно ли иметь только член класса boost::optional<A>
и как-то инициализировать его?
Изменить (пояснение) Я хотел бы иметь элемент данных класса boost::optional<A> op_
, но не знаю, как его инициализировать.
boost::optional<A> op_
, как было предложено в последнем вопросе, или элемент данныхconst boost::optional<A>& op_
, как в определенииB
. Это имеет большое значение. - person lubgr   schedule 01.04.2019