![]() |
![]() ![]() ![]() ![]() |
![]() |
Class template variantBoost , The Boost C++ Libraries BoostBook Documentation Subset , Reference
|
Требуется: | Первый ограниченный тип<variant>(то есть<T1>) должен соответствовать требованиям.Конструкция по умолчанию[20.1.4]. |
Пост-условия: | Содержание<*this>является значением по умолчанию первого ограниченного типа (т.е.<T1>. |
Б Броски: Броски: |
May fail with any exceptions arising from the default
constructor of T1. |
variant(constvariant&other);>
Пост-условия: | Содержание<*this>является копией содержания<other>. |
Броски: Броски: |
May fail with any exceptions arising from the
copy constructor of other's contained type. |
variant(variant && other);
Requires: |
C++11 compatible compiler. |
Postconditions: |
Content of *this is move constructed from the content of
other. |
Броски: |
May fail with any exceptions arising from the
move constructor of other's contained type. |
template<typename T> variant(T & operand);
Requires: |
T must be unambiguously convertible to one of
the bounded types (i.e., T1, T2,
etc.). |
Postconditions: |
Content of *this is the best conversion of
operand to one of the bounded types, as determined
by standard overload resolution rules. |
Броски: |
May fail with any exceptions arising from the conversion of
operand to one of the bounded types. |
template<typenameT>variant(constT&operand);>
Примечания: | Такая же семантика, как и у предыдущего конструктора, но позволяет строить из временного. |
template<typenameT>variant(T&&operand);>
Требуется: | С++11 совместимый компилятор. |
Примечания: | Такая же семантика, как и у предыдущего конструктора, но позволяет перемещать конструкцию, если<operand>является rvalue. |
типовое имя , , , , , , и , , , , ,
U1, T2, ... T2, ... T2, ... *это является наилучшим преобразованием содержимого operand в один из ограниченных типов, как определено стандартными правилами разрешения перегрузки.Броски:
<-- [ORIG_BEGIN]Броски:
Броски:
variant<U1, U2, ..., UN> is itself
one of the bounded types, then may fail with any exceptions arising
from the copy constructor of
variant<U1, U2, ..., UN>. Otherwise, may fail
with any exceptions arising from the conversion of the content of
operand to one of the bounded types.template<typenameU1,typenameU2,...,typenameUN> variant(constvariant<U1,U2,...,UN>&operand);>
Примечания: | Такая же семантика, как и у предыдущего конструктора, но позволяет строить из временного. |
template<typenameU1,typenameU2,...,typenameUN> variant(variant<U1,U2,...,UN>&&operand);>
Требуется: | С++11 совместимый компилятор. |
Примечания: | Такая же семантика, как и у предыдущего конструктора, но позволяет перемещать конструкцию. |
~variant();>
Эффекты: [!-- [ORIG_BEGIN]Эффекты: Эффекты: |
Destroys the content of *this. |
Броски: |
Will not throw. |
variant modifiersvoid swap(variant & other);
Requires: |
Каждый ограниченный тип должен соответствовать требованиям концепции MoveAssignable. |
Эффекты: |
Interchanges the content of *this and
other. |
Броски: |
If the contained type of other is the same as
the contained type of *this, then may fail with any
exceptions arising from the swap of the contents of
*this and other. Otherwise, may fail
with any exceptions arising from either of the move or copy constructors
of the contained types. Also, in the event of insufficient
memory, may fail with std::bad_alloc
(why?). |
variant & operator=(const variant & rhs);
Requires: |
Every bounded type must fulfill the requirements of the Assignable concept. |
Эффекты: |
If the contained type of rhs is the same as
the contained type of *this, then assigns the
content of rhs into the content of
*this. Otherwise, makes the content of
*this a copy of the content of rhs,
destroying the previous content of *this. |
Броски: |
If the contained type of rhs is the same as
the contained type of *this, then may fail with any
exceptions arising from the assignment of the content of
rhs into the content *this. Otherwise,
may fail with any exceptions arising from the copy constructor
of the contained type of rhs. Also, in the event of
insufficient memory, may fail with std::bad_alloc
(why?). |
variant&operator=(variant&&rhs);>
Требуется: |
|
Эффекты: |
Если содержащееся содержание<rhs>совпадает с содержащимся типом<*this>, то перемещение присваивает содержание<rhs>содержанию<*this>. В противном случае, перемещайте конструкции<*this>, используя содержимое<rhs>, разрушая предыдущее содержимое<*this>. |
Броски: |
Если содержащийся тип<rhs>является таким же, как содержащийся тип<*this>, то может не сработать с любыми исключениями, вытекающими из назначения перемещения содержания<rhs>в содержание<*this>. В противном случае, может не сработать с любыми исключениями, вытекающими из перемещения конструктора содержащегося типа<rhs>. Кроме того, в случае недостаточной памяти может потерпеть неудачу с<std::bad_alloc>почему?. |
template<typenameT>variant&operator=(constT&rhs);>
Требуется: |
|
Эффекты: |
Если<*this>содержит<T>, то<rhs>присваивает содержанию<*this>. В противном случае содержание<*this>становится наилучшим преобразованием<rhs>в один из ограниченных типов, что определяется стандартными правилами разрешения перегрузок, разрушающими прежнее содержание<*this>. |
Броски: |
Если<*this>содержит<T>, то может не работать с любыми исключениями, вытекающими из назначения<rhs>в содержание<*this>. В противном случае может произойти сбой с любыми исключениями, вытекающими из преобразования<rhs>в один из ограниченных типов. Кроме того, в случае недостаточной памяти, может потерпеть неудачу с<std::bad_alloc>почему?. |
template<typenameT>variant&operator=(T&&rhs);>
Требуется: |
|
Эффекты: |
Если<*this>содержит<T>, то переместить присваивает<rhs>в содержание<*this>. В противном случае содержание<*this>является наилучшим преобразованием<rhs>в один из ограниченных типов, что определяется стандартными правилами разрешения перегрузки, разрушающими предыдущее содержание<*this>(конверсия обычно осуществляется с помощью конструкции перемещения). |
Броски: |
Если<*this>содержит<T>, то может не сработать с любыми исключениями, вытекающими из назначения перемещения<rhs>в содержание<*this>. В противном случае может произойти сбой с любыми исключениями, вытекающими из преобразования<rhs>в один из ограниченных типов. Кроме того, в случае недостаточной памяти, может потерпеть неудачу с<std::bad_alloc>почему?. |
variant queriesintwhich()const;>
Возвращение: | Нулевой индекс в набор ограниченных типов содержащегося типа<*this>. (Например, если вызвать<variant<int, std::string>>объект, содержащий<std::string>,<which()>вернулся бы<1>.) |
Броски: Броски: |
Will not throw. |
boolempty()const;>
Возврат: | <false>:<variant>всегда содержит точно один из своих ограниченных типов. (См.раздел под названием “ «Гарантия никогда не пустует»”для получения дополнительной информации.) |
Обоснование: | Облегчает общую совместимость сповышением:: любой. |
Броски: Броски:Броски: |
Will not throw. |
conststd::type_info&type()const;>
Примечания: | <boost::variant>usues Boost. Библиотека TypeIndex возвращается<const boost::typeindex::type_info &>. Этот метод доступен даже при отключении RTTI. |
Возвращается: | <typeid(x)>, где<x>является содержанием<*this>. |
Бросает: Броски: |
Will not throw. |
variant relationalbooloperator==(constvariant&rhs)const; template<typenameU>voidoperator==(constU&)const;>Сравнение равенства.
Примечания: | Возврат перегрузки<void>существует только для того, чтобы запретить неявное преобразование правой стороны оператора в<variant>; таким образом, его использование (целенаправленно) приведет к ошибке времени компиляции. |
Требуется: | Каждый ограниченный тип<variant>должен соответствовать требованиям концепции Равенства. |
<true>, если<which() == rhs.which()>и<content_this == content_rhs>, где<content_this>является содержанием<*this>и<content_rhs>является содержанием<rhs>. | |
| Бросок: Бросок: Броски: |
If which() == rhs.which() then may fail with
any exceptions arising from operator==(T,T), where
T is the contained type of
*this. |
booloperator!=(constvariant&rhs)const; template<typenameU>voidoperator!=(constU&)const;>Сравнение неравенства.
Примечания: | Возвращение перегрузки<void>существует только для того, чтобы запретить неявное преобразование правой стороны оператора в<variant>; таким образом, ее использование (целенаправленно) приведет к ошибке компиляции времени. |
Требования: | Каждый ограниченный тип<variant>должен соответствовать требованиям концепции Равенства. |
Возврат: | <true>, если<!(*this == rhs)>. |
Бросок: Броски: |
If which() == rhs.which() then may fail with
any exceptions arising from operator==(T,T), where
T is the contained type of
*this. |
boolоператор>варианттиповое имяконст>конст>конст>конст>конст>конст>конст>конст>конст>конст>конст>конст>конст>конст>конст>конст>конст>конст< В противном случае:which() < rhs. which().Броски:
Броски:
If which() == rhs.which()then may fail with any exceptions arising fromoperator<(T,T), whereTis the contained type of*this.
booloperator>(constvariant&rhs)const; template<typenameU>voidoperator>(constU&)const;>Больше
Примечания: | Возвращение перегрузки<void>существует только для того, чтобы запретить неявное преобразование правой стороны оператора в<variant>; таким образом, его использование (целенаправленно) приведет к ошибке компиляции времени. |
Требуется: | Каждый ограниченный тип<variant>должен соответствовать требованиям концепции LessThanComparable. |
Возвращение: | истинно, если<rhs < *this>. |
Бросок:Бросок: Броски: |
May fail with
any exceptions arising from operator<(T,T),
where T is the contained type of
*this. |
booloperator<=(constvariant&rhs)const; template<typenameU>voidoperator<=(constU&)const;>Меньше хан или равное сравнение.
Примечания: | Возврат перегрузки<void>существует только для того, чтобы запретить неявное преобразование правой стороны оператора в<variant>; таким образом, его использование (целенаправленно) приведет к ошибке времени компиляции. |
Требуется: | Каждый ограниченный тип<variant>должен соответствовать требованиям концепции LessThanComparable. |
Возвращение: | истинно, если<!(*this > rhs)>. |
Бросок: Броски: |
May fail with
any exceptions arising from operator<(T,T),
where T is the contained type of
*this. |
booloperator>=(constvariant&rhs)const; template<typenameU>voidoperator>=(constU&)const;>Больше
Примечания: | Возвращение перегрузки<void>существует только для того, чтобы запретить неявное преобразование правой стороны оператора в<variant>; таким образом, ее использование (целенаправленно) приведет к ошибке компиляции времени. |
Требуется: | Каждый ограниченный тип<variant>должен соответствовать требованиям концепции LessThanComparable. |
Возвращение: | истинно, если<!(*this < lhs)>. |
Бросок: [889_BEGIN] Бросок: Броски: |
May fail with
any exceptions arising from operator<(T,T),
where T is the contained type of
*this. |
Статья Class template variant раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.
реклама |