を に入れると、T
で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);
}