|  | 
|      | 
|  | 
| 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 *thisis move constructed from the content ofother. | 
| Броски: | May fail with any exceptions arising from the
            move constructor of other's contained type. | 
template<typename T> variant(T & operand);
| Requires: | Tmust be unambiguously convertible to one of
            the bounded types (i.e.,T1,T2,
            etc.). | 
| Postconditions: | Content of *thisis the best conversion ofoperandto one of the bounded types, as determined
            by standard overload resolution rules. | 
| Броски: | May fail with any exceptions arising from the conversion of operandto 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 *thisandother. | 
| Броски: | If the contained type of otheris the same as
              the contained type of*this, then may fail with any
              exceptions arising from theswapof the contents of*thisandother. 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 withstd::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 rhsis the same as
              the contained type of*this, then assigns the
              content ofrhsinto the content of*this. Otherwise, makes the content of*thisa copy of the content ofrhs,
              destroying the previous content of*this. | 
| Броски: | If the contained type of rhsis the same as
              the contained type of*this, then may fail with any
              exceptions arising from the assignment of the content ofrhsinto the content*this. Otherwise,
              may fail with any exceptions arising from the copy constructor
              of the contained type ofrhs. Also, in the event of
              insufficient memory, may fail withstd::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 fromoperator==(T,T), whereTis 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 fromoperator==(T,T), whereTis 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),
              whereTis 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),
              whereTis 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),
              whereTis the contained type of*this. | 
Статья Class template variant раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.
| реклама |