std::experimental::any_cast
来自 cppreference.com
< cpp | experimental | any
template<class ValueType> ValueType any_cast(const any& operand); |
(1) | (库基础 TS) |
template<class ValueType> ValueType any_cast(any& operand); |
(2) | (库基础 TS) |
template<class ValueType> ValueType any_cast(any&& operand); |
(3) | (库基础 TS) |
template<class ValueType> const ValueType* any_cast(const any* operand) noexcept; |
(4) | (库基础 TS) |
template<class ValueType> ValueType* any_cast(any* operand) noexcept; |
(5) | (库基础 TS) |
执行对包含对象的类型安全访问。
对于 (1-3),如果 ValueType
不是引用,并且 std::is_copy_constructible<ValueType>::value 为 false,则程序将格式错误。
[编辑] 参数
operand | - | 目标 any 对象 |
[编辑] 返回值
1) 返回 *any_cast<std::add_const_t<std::remove_reference_t<ValueType>>>(&operand).
2,3) 返回 *any_cast<std::remove_reference_t<ValueType>>(&operand).
4,5) 如果 operand 不是空指针,并且请求的
ValueType
的 typeid
与 operand 内容的 typeid
相匹配,则指向 operand 所包含值的指针,否则为 null 指针。[编辑] 异常
1-3) 如果请求的
ValueType
的 typeid
与 operand 内容的 typeid
不匹配,则抛出 bad_any_cast
异常。