0

私は移動不可能でコピー不可能なタイプを持っています:

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::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_、初期化する方法がわかりません。

4

1 に答える 1