【发布时间】:2016-10-06 14:48:50
【问题描述】:
如果我将T 放入std::any,我可以使用any_cast<T>(my_any) 得到它。但是标准(= C++17,目前处于投票阶段)是否包含像 any_cast<T>(optional<any> oa) 这样的函数,如果 oa 是 nullopt,则返回 nullopt,否则返回 std::any_cast<T>(oa.value())?或者类似的东西?
编辑:由于人们似乎在建议实现,我也将列出我现在使用的:
/* using magic here to select between boost/std::experimental/std versions */
template<typename T>
inline const optional<T> any_cast(const optional<any>& operand)
{
return operand ?
optional<T>(any_cast<T>(operand.value())) :
optional<T>(nullopt);
}
【问题讨论】:
标签: c++ optional c++-standard-library c++17 stdany