Namespaces
Variants

std::experimental:: any_cast

From cppreference.net
template < class ValueType >
ValueType any_cast ( const any & operand ) ;
(1) (библиотека fundamentals TS)
template < class ValueType >
ValueType any_cast ( any & operand ) ;
(2) (библиотека fundamentals TS)
template < class ValueType >
ValueType any_cast ( any && operand ) ;
(3) (библиотека fundamentals TS)
template < class ValueType >
const ValueType * any_cast ( const any * operand ) noexcept ;
(4) (библиотека fundamentals TS)
template < class ValueType >
ValueType * any_cast ( any * operand ) noexcept ;
(5) (библиотека fundamentals TS)

Осуществляет типобезопасный доступ к содержащемуся объекту.

Для (1-3) программа является некорректной, если ValueType не является ссылкой и std:: is_copy_constructible < ValueType > :: value равно false .

Параметры

операнд - целевой 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 не является нулевым указателем, и typeid запрашиваемого ValueType совпадает с содержимым operand , возвращается указатель на значение, содержащееся в operand , иначе возвращается нулевой указатель.

Исключения

1-3) Выбрасывает bad_any_cast если typeid запрашиваемого ValueType не совпадает с типом содержимого operand .