Irb*_*bis 2 c++ boost c++11 boost-optional
我有以下简单的结构:
struct X
{
X(std::string name, int value): name_(name), value_(value){}
std::string name_;
int value_;
};
Run Code Online (Sandbox Code Playgroud)
我想将其与boost可选一起使用而不进行复制。这是一个选择:
boost::optional<X> op;
op.emplace("abc", 5);
Run Code Online (Sandbox Code Playgroud)
是否可以不使用emplace函数?(我的意思是一行表达式)
是的,只需使用转发ctor args的“ in place”标记构造它即可!
boost::optional<X> op(boost::optional::in_place_init, "abc", 5);
Run Code Online (Sandbox Code Playgroud)
(参考)
FWIW,如果您不介意采取任何行动,那么这也适用:
boost::optional<X> op(X("abc", 5));
Run Code Online (Sandbox Code Playgroud)
扫描该参考页面;有大量的方式来构造或填充一个boost::optional。