如何将构造函数参数转发给boost :: optional

时间:2019-04-01 16:58:31

标签: c++ c++11 boost boost-optional

我有以下简单的结构:

struct X
{
    X(std::string name, int value): name_(name), value_(value){}

    std::string name_;
    int value_;
};

我想将其与boost可选一起使用而不进行复制。这是一个选择:

boost::optional<X> op;
op.emplace("abc", 5);

是否可以不使用emplace函数? (我的意思是一行表达式)

1 个答案:

答案 0 :(得分:5)

是的,只需使用转发ctor args的“就位”标签构建它即可!

boost::optional<X> op(boost::optional::in_place_init, "abc", 5);

ref

FWIW,如果您不介意采取任何行动,那么也可以这样做:

boost::optional<X> op(X("abc", 5));

浏览该参考页面;有很多方法可以构造或填充boost::optional