std:: get_if (std::variant)
|
Определено в заголовке
<variant>
|
||
| (1) | (начиная с C++17) | |
|
template
<
std::
size_t
I,
class
...
Types
>
constexpr
std::
add_pointer_t
<
std::
variant_alternative_t
<
I,
std::
variant
<
Types...
>>>
|
||
|
template
<
std::
size_t
I,
class
...
Types
>
constexpr
std::
add_pointer_t
<
const
std::
variant_alternative_t
<
I,
std::
variant
<
Types...
>>>
|
||
| (2) | (начиная с C++17) | |
|
template
<
class
T,
class
...
Types
>
constexpr
std::
add_pointer_t
<
T
>
|
||
|
template
<
class
T,
class
...
Types
>
constexpr
std::
add_pointer_t
<
const
T
>
|
||
I
не является допустимым индексом в варианте.
I
в качестве индекса (с нулевым основанием) для
T
в
Types...
. Вызов является некорректным, если
T
не является уникальным элементом в
Types...
.
Содержание |
Параметры шаблона
| I | - | индекс для поиска |
| Type | - | уникальный тип для поиска |
Параметры
| pv | - | указатель на вариант |
Возвращаемое значение
Указатель на значение, хранящееся в указываемом варианте, или нулевой указатель при ошибке.
Пример
#include <iostream> #include <variant> int main() { auto check_value = [](const std::variant<int, float>& v) { if (const int* pval = std::get_if<int>(&v)) std::cout << "variant value: " << *pval << '\n'; else std::cout << "failed to get value!" << '\n'; }; std::variant<int, float> v{12}, w{3.f}; check_value(v); check_value(w); }
Вывод:
variant value: 12 failed to get value!
Смотрите также
|
(C++17)
|
читает значение варианта по заданному индексу или типу (если тип уникален), генерирует исключение при ошибке
(шаблон функции) |