如何将构造函数参数转发给 boost::optional
How to forward constructor arguments to boost::optional
我有以下简单结构:
struct X
{
X(std::string name, int value): name_(name), value_(value){}
std::string name_;
int value_;
};
我想在不复制的情况下将其与 boost optional 一起使用。这是一个选项:
boost::optional<X> op;
op.emplace("abc", 5);
不使用 emplace 函数可以吗? (我是说一行表达式)
是的,只需使用转发 ctor args 的 "in place" 标签构造它!
boost::optional<X> op(boost::optional::in_place_init, "abc", 5);
(ref)
FWIW 如果你不介意移动那么这也有效:
boost::optional<X> op(X("abc", 5));
向下浏览该参考页;有很多方法可以构造或填充 boost::optional
.
我有以下简单结构:
struct X
{
X(std::string name, int value): name_(name), value_(value){}
std::string name_;
int value_;
};
我想在不复制的情况下将其与 boost optional 一起使用。这是一个选项:
boost::optional<X> op;
op.emplace("abc", 5);
不使用 emplace 函数可以吗? (我是说一行表达式)
是的,只需使用转发 ctor args 的 "in place" 标签构造它!
boost::optional<X> op(boost::optional::in_place_init, "abc", 5);
(ref)
FWIW 如果你不介意移动那么这也有效:
boost::optional<X> op(X("abc", 5));
向下浏览该参考页;有很多方法可以构造或填充 boost::optional
.