如果我将 aT
放入 中std::any
,我可以使用any_cast<T>(my_any)
. 但是标准(= C++17,目前处于投票阶段)是否包含一个函数,如果 oa 是则any_cast<T>(optional<any> 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);
}