![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
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)
, whereT
is 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.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |