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