std:: get (std::variant)
|
Определено в заголовке
<variant>
|
||
| (1) | (начиная с C++17) | |
|
template
<
std::
size_t
I,
class
...
Types
>
constexpr
std::
variant_alternative_t
<
I,
std::
variant
<
Types...
>>
&
|
||
|
template
<
std::
size_t
I,
class
...
Types
>
constexpr
std::
variant_alternative_t
<
I,
std::
variant
<
Types...
>>
&&
|
||
|
template
<
std::
size_t
I,
class
...
Types
>
constexpr
const
std::
variant_alternative_t
<
I,
std::
variant
<
Types...
>>
&
|
||
|
template
<
std::
size_t
I,
class
...
Types
>
constexpr
const
std::
variant_alternative_t
<
I,
std::
variant
<
Types...
>>
&&
|
||
| (2) | (начиная с C++17) | |
|
template
<
class
T,
class
...
Types
>
constexpr T & get ( std:: variant < Types... > & v ) ; |
||
|
template
<
class
T,
class
...
Types
>
constexpr T && get ( std:: variant < Types... > && v ) ; |
||
|
template
<
class
T,
class
...
Types
>
constexpr const T & get ( const std:: variant < Types... > & v ) ; |
||
|
template
<
class
T,
class
...
Types
>
constexpr const T && get ( const std:: variant < Types... > && v ) ; |
||
I
не является допустимым индексом в варианте.
T
, возвращает ссылку на значение, хранящееся в
v
. В противном случае выбрасывает
std::bad_variant_access
. Вызов является некорректным, если
T
не является уникальным элементом
Types...
.
Содержание |
Параметры шаблона
| I | - | индекс для поиска |
| T | - | уникальный тип для поиска |
| Types... | - |
типы, формирующие
variant
|
Параметры
| v | - |
a
variant
|
Возвращаемое значение
Ссылка на значение, хранящееся в варианте.
Исключения
Пример
#include <iostream> #include <string> #include <variant> int main() { std::variant<int, float> v{12}, w; std::cout << std::get<int>(v) << '\n'; w = std::get<int>(v); w = std::get<0>(v); // тот же эффект, что и в предыдущей строке // std::get<double>(v); // ошибка: нет double в [int, float] // std::get<3>(v); // ошибка: допустимые значения индекса 0 и 1 try { w = 42.0f; std::cout << std::get<float>(w) << '\n'; // ок, выводит 42 w = 42; std::cout << std::get<float>(w) << '\n'; // выбрасывает исключение } catch (std::bad_variant_access const& ex) { std::cout << ex.what() << ": w содержит int, а не float\n"; } }
Возможный вывод:
12 42 Unexpected index: w contained int, not float
Смотрите также
|
(C++17)
|
получает указатель на значение указанного
variant
по индексу или типу (если уникален), возвращает null при ошибке
(шаблон функции) |
|
(C++11)
|
доступ к указанному элементу tuple
(шаблон функции) |
|
(C++11)
|
доступ к элементу
array
(шаблон функции) |
|
(C++11)
|
доступ к элементу
pair
(шаблон функции) |
|
(C++20)
|
получает итератор или sentinel из
std::ranges::subrange
(шаблон функции) |
|
(C++26)
|
получает ссылку на действительную или мнимую часть из
std::complex
(шаблон функции) |