3
我想知道是否有一種優雅的方式來將boost::optional<A>
轉換爲boost::optional<B>
,但B
可以從A
構建,雖然明確地說。這個作品:boost :: optional和類型轉換
# 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;
}
但需要放在那裏永遠不會使用的一些價值似乎尷尬。有什麼更好的建議?