Функция make_any
Функция make_any создает и возвращает объект std::any, который хранит копию переданного значения. Первым параметром функция принимает значение, которое нужно сохранить в any. В отличие от конструктора any, функция make_any позволяет явно указать тип создаваемого объекта, что бывает полезно при работе с перегрузками и шаблонами. Функция доступна начиная со стандарта C++17.
Синтаксис
std::make_any<T>(value)
Пример
Давайте создадим объект any, содержащий целое число 42, и проверим его тип:
#include <iostream>
#include <any>
using namespace std;
int main()
{
any a = make_any<int>(42);
cout << any_cast<int>(a) << endl;
cout << a.type().name() << endl;
return 0;
}
Результат выполнения кода:
42
"i"
Пример
Давайте создадим объект any, содержащий строку "abcde", и выведем ее на экран:
#include <iostream>
#include <any>
#include <string>
using namespace std;
int main()
{
any a = make_any<string>("abcde");
cout << any_cast<string>(a) << endl;
return 0;
}
Результат выполнения кода:
"abcde"
Пример
Давайте создадим объект any с явным указанием типа double и значением 3.14, затем проверим, содержит ли он значение:
#include <iostream>
#include <any>
using namespace std;
int main()
{
any a = make_any<double>(3.14);
if (a.has_value()) {
cout << "Has value: " << any_cast<double>(a) << endl;
} else {
cout << "No value" << endl;
}
return 0;
}
Результат выполнения кода:
"Has value: 3.14"
Смотрите также
-
функция
any_cast,
которая извлекает значение из объекта any -
функция
make_tuple,
которая создает кортеж из переданных значений -
функция
make_pair,
которая создает пару из двух значений -
функция
to_string,
которая преобразует число в строку