Функция any_cast
Функция any_cast используется для извлечения значения из объекта any.
В первый параметр мы передаем объект any, из которого нужно извлечь значение.
Функция выполняет проверку типа и возвращает копию хранимого значения.
Если тип не совпадает, генерируется исключение bad_any_cast.
Синтаксис
any_cast<T>(any_obj)
Пример
Давайте извлечем целое число из объекта any:
#include <iostream>
#include <any>
using namespace std;
int main()
{
any a = 123;
int res = any_cast<int>(a);
cout << res << endl;
return 0;
}
Результат выполнения кода:
123
Пример
Давайте извлечем строку из объекта any:
#include <iostream>
#include <any>
#include <string>
using namespace std;
int main()
{
any a = string("abcde");
string res = any_cast<string>(a);
cout << res << endl;
return 0;
}
Результат выполнения кода:
"abcde"
Пример
Давайте попробуем извлечь число как строку, что вызовет исключение:
#include <iostream>
#include <any>
#include <string>
using namespace std;
int main()
{
any a = 123;
try
{
string res = any_cast<string>(a);
cout << res << endl;
}
catch (const bad_any_cast& e)
{
cout << "Bad any_cast: " << e.what() << endl;
}
return 0;
}
Результат выполнения кода:
"Bad any_cast: bad any_cast"
Смотрите также
-
функция
make_any,
которая создает объект any -
оператор
static_cast,
который выполняет явное преобразование типов -
оператор
dynamic_cast,
который выполняет безопасное преобразование полиморфных типов -
оператор
const_cast,
который снимает или добавляет константность