【发布时间】:2015-02-05 15:03:45
【问题描述】:
我想知道当B 可以从A 构造时,是否有一种优雅的方式将boost::optional<A> 转换为boost::optional<B>,尽管是明确的。这有效:
# include <boost/optional.hpp>
class Foo
{
int i_;
public:
explicit Foo(int i) : i_(i) {}
};
int main()
{
boost::optional<int> i;
... // i gets initialized or not
boost::optional<Foo> foo;
foo = boost::optional<Foo>(bool(i), Foo(i.value_or(0 /*unused value*/)));
return 0;
}
但是需要在其中放入一些永远不会使用的值似乎很尴尬。有更好的建议吗?
【问题讨论】:
标签: c++ boost boost-optional