Класс variant
Любой экземпляр варианта в любой момент времени либо содержит значение одного из его альтернативных типов, либо не содержит значения.
Синтаксис
template <class... Types>
class variant
Члены
Конструкторы
Имя | Описание |
---|---|
variant | Создает объект типа variant . |
Функции
Имя | Описание |
---|---|
emplace | Создает новое автономное значение. |
index | Возвращает индекс автономного значения. |
swap | |
valueless_by_exception | Возвращает значение false , если вариант содержит значение. |
Операторы
Имя | Описание |
---|---|
оператор= | Заменяет вариант копией другого варианта. |
emplace
Создает новое автономное значение.
template <class T, class... Args>
T& emplace(Args&&...);
template <class T, class U, class... Args>
T& emplace(initializer_list<U>, Args&&...);
template <size_t I, class... Args>
variant_alternative_t<I, variant<Types...>>& emplace(Args&&...);
template <size_t I, class U, class... Args>
variant_alternative_t<I, variant<Types...>>& emplace(initializer_list<U>, Args&&...);
index
Возвращает индекс автономного значения.
constexpr size_t index() const noexcept;
variant
Создает объект типа variant
. Также включает деструктор.
constexpr variant() noexcept(see below);
variant(const variant&);
variant(variant&&) noexcept(see below);
template <class T>
constexpr variant(T&&) noexcept(see below);
template <class T, class... Args>
constexpr explicit variant(in_place_type_t<T>, Args&&...);
template <class T, class U, class... Args>
constexpr explicit variant(in_place_type_t<T>, initializer_list<U>, Args&&...);
template <size_t I, class... Args>
constexpr explicit variant(in_place_index_t<I>, Args&&...);
template <size_t I, class U, class... Args>
constexpr explicit variant(in_place_index_t<I>, initializer_list<U>, Args&&...);
template <class Alloc>
variant(allocator_arg_t, const Al&);
template <class Alloc>
variant(allocator_arg_t, const Al&, const variant&);
template <class Alloc>
variant(allocator_arg_t, const Al&, variant&&);
template <class Alloc, class T>
variant(allocator_arg_t, const Al&, T&&);
template <class Alloc, class T, class... Args>
variant(allocator_arg_t, const Al&, in_place_type_t<T>, Args&&...);
template <class Alloc, class T, class U, class... Args>
variant(allocator_arg_t, const Al&, in_place_type_t<T>, initializer_list<U>, Args&&...);
template <class Alloc, size_t I, class... Args>
variant(allocator_arg_t, const Al&, in_place_index_t<I>, Args&&...);
template <class Alloc, size_t I, class U, class... Args>
variant(allocator_arg_t, const Al&, in_place_index_t<I>, initializer_list<U>, Args&&...);
~variant();
Параметры
Аль
Класс распределителя для использования с данным объектом.
operator=
Заменяет вариант копией другого варианта.
variant& operator=(const variant&);
variant& operator=(variant&&) noexcept(see below);
template <class T>
variant& operator=(T&&) noexcept(see below);
swap
void swap(variant&) noexcept(see below);
valueless_by_exception
Возвращает значение false
, если вариант содержит значение.
constexpr bool valueless_by_exception() const noexcept;