![]() |
![]() ![]() ![]() ![]() |
![]() |
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.
реклама |