![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Class template functionNBoost , The Boost C++ Libraries BoostBook Documentation Subset , Reference
|
Постусловия: | <this->empty() > |
Броски: | Не буду бросать. |
functionN(constfunctionN&f);>
Пост-условия: | Содержит копию цели<f >, если она есть, или пуста, если<f.empty() >. |
Броски: | Не бросит, если не копирует цель<f >бросок. |
functionN(functionN&&f);>
Требуется: | совместимый компилятор C++11. |
Постусловия: | Переносит значение с<f >на<*this >. Если аргумент имеет свой функциональный объект, выделенный на кучу, его буфер будет назначен<*this >, оставляя аргумент пустым. |
Броски: | Не бросит, если аргумент не имеет своего функционального объекта, выделенного не на кучу и копирующего цель бросков<f >. |
template<typenameF>functionN(Ff);>
Требуется: | F — объект функции, который можно назвать из<this >. |
<*this >нацелен на копию<f >, если<f >не пуст, или<this->empty() >, если<f >пуст. |
template<typenameF,typenameAllocator>functionN(Ff,Allocatoralloc);>
Требует: | F является функциональным объектом, вызываемым из<this >, Распределитель является Распределителем. Копирующий конструктор и разрушитель Аллокатора не должны выбрасывать. |
Пост-условия: | <*this >нацелены на копию<f >, если<f >не пуст, или<this->empty() >, если<f >пуст. |
Эффекты: | Если требуется выделение памяти, для выделения этой памяти будет использоваться данный распределитель (или его копия). |
functionN&operator=(constfunctionN&f);>
functionN&operator=(functionN&&f);>
Требуется: | совместимый компилятор C++11. |
Постусловия: | Переместите значение от<f >к<*this >. Если аргумент имеет объект функции, выделенный на куче, его буфер будет назначен<*this >, оставляя аргумент пустым. |
Броски: | Не бросит, если аргумент не имеет своего функционального объекта, выделенного не на кучу и копирующего цель<f >бросков. |
~functionN();>
Эффекты: | Если<!this->empty() >уничтожает цель этого. |
functionN
capacityboolempty()const;>
<false >, если<this >имеет цель, и<true >в противном случае. | |
Броски: | Не буду бросать. |
operatorsafe_bool()const;>
<safe_bool >, который оценивает<false >в булевом контексте, когда<this->empty() >и<true >иначе. | |
Бросает: | Не бросит. |
booloperator!()const;>
functionN
target accesstemplate<typenameFunctor>Functor*target(); template<typenameFunctor>constFunctor*target()const;>
Возвращение: | Если<this >сохраняет цель типа<Functor >, возвращает адрес цели. В противном случае возвращает указатель NULL. |
Бросает: | Не буду бросать. |
template<typenameFunctor>boolcontains(constFunctor&f)const;>
Возврат: | <true >, если<this->target<Functor>() >не является NULL и<function_equal(*(this->target<Functor>()), f) > |
conststd::type_info&target_type()const;>
Возврат: | <typeid >объекта целевой функции, или<typeid(void) >, если<this->empty() >. |
Бросок: | Не буду бросать. |
functionN
invocationresult_typeoperator()(arg1_typea1,arg2_typea2,...,argN_typeaN)const;>
Эффекты: | <f(a1, a2, ..., aN) >, где<f >является целью<*this > |
Возврат: | , если<R >является<void >, ничего не возвращается; в противном случае возвращается обратное значение вызова<f >. |
Бросает: | <bad_function_call >, если<this->empty() >. В противном случае, возможно, через любое исключение, брошенное целевой функцией<f >. |
functionN
comparison operatorstemplate<typenameT1,typenameT2,...,typenameTN,typenameFunctor> booloperator==(constfunctionN<T1,T2,...,TN>&f,Functorg); template<typenameT1,typenameT2,...,typenameTN,typenameFunctor> booloperator==(Functorg,constfunctionN<T1,T2,...,TN>&f); template<typenameT1,typenameT2,...,typenameTN,typenameFunctor> booloperator==(constfunctionN<T1,T2,...,TN>&f, reference_wrapper<Functor>g); template<typenameT1,typenameT2,...,typenameTN,typenameFunctor> booloperator==(reference_wrapper<Functor>g, constfunctionN<T1,T2,...,TN>&f); template<typenameT1,typenameT2,...,typenameTN,typenameU1,typenameU2, ...,typenameUN> voidoperator==(constfunctionN<T1,T2,...,TN>&f1, constfunctionN<U1,U2,...,UN>&f2);>
Возвращение:
f
>хранит объект типа<Functor
>и применяется одно из следующих условий:g
>относится к типу<reference_wrapper<Functor>
>и<f.target<Functor>() == g.get_pointer()
>.g
>не относится к типу<reference_wrapper<Functor>
>и<function_equal(*(f.target<Functor>()),
g)
>.Примечания:
functionN
>Объекты не равны.Обоснование:
safe_bool
>открывает лазейку, в которой два<functionN
>экземпляра могут быть сопоставлены через<==
>, хотя это невозможно реализовать. Неопределенный<void
operator==
>закрывает лазейку и обеспечивает ошибку компиляции или времени ссылки.template<typenameT1,typenameT2,...,typenameTN,typenameFunctor> booloperator!=(constfunctionN<T1,T2,...,TN>&f,Functorg); template<typenameT1,typenameT2,...,typenameTN,typenameFunctor> booloperator!=(Functorg,constfunctionN<T1,T2,...,TN>&f); template<typenameT1,typenameT2,...,typenameTN,typenameFunctor> booloperator!=(constfunctionN<T1,T2,...,TN>&f, reference_wrapper<Functor>g); template<typenameT1,typenameT2,...,typenameTN,typenameFunctor> booloperator!=(reference_wrapper<Functor>g, constfunctionN<T1,T2,...,TN>&f); template<typenameT1,typenameT2,...,typenameTN,typenameU1,typenameU2, ...,typenameUN> voidoperator!=(constfunctionN<T1,T2,...,TN>&f1, constfunctionN<U1,U2,...,UN>&f2);>
Возвращение: | Верно, когда<f >не хранит объект типа<Functor >или хранит объект типа<Functor >и применяется одно из следующих условий:
|
Примечания: |
<functionN >Объекты не равны. |
Обоснование: |
Преобразование<safe_bool >открывает лазейку, при которой два<functionN >экземпляра могут быть сопоставлены через<!= >, хотя это не представляется возможным реализовать. Неопределенный<void
operator!= >закрывает лазейку и обеспечивает ошибку компиляции или времени ссылки. |
Статья Class template functionN раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |