Struct template impl Boost , The Boost C++ Libraries BoostBook Documentation Subset , Struct template call
Struct template impl
boost::proto::call::impl
Synopsis
template < typename Expr , typename State, typename Data>
struct impl : proto::transform_impl <Expr, State, Data> {
typedef see - below
result_type ;
result_type operator ( ) ( typename impl :: expr_param ,
typename impl :: state_param ,
typename impl :: data_param ) const ;
} ;
Description
impl
public
types
typedef <see - below
> result_type ;
В следующем описании тип<T
>определяется для моделирования концепцииPrimitiveTransform , если<proto::is_transform <T>::value
>является<true
>.
<proto::call <T>::impl<Expr,State,Data>::result_type
>вычисляется следующим образом:
Если<T
>из формы<PrimitiveTransform
>или<PrimitiveTransform ()
>, то<result_type
>:
<typename boost :: result_of < PrimitiveTransform ( Expr , State , Data ) > :: type >
Если<T
>имеет форму<PrimitiveTransform (A0 )
>, то<result_type
>это:
<typename boost :: result_of < PrimitiveTransform (
typename boost :: result_of < when < _ , A 0 > ( Expr , State , Data ) > :: type ,
State ,
Data
) > :: type >
Если<T
>имеет форму<PrimitiveTransform (A0 , A1 )
>, то<result_type
>:
<typename boost :: result_of < PrimitiveTransform (
typename boost :: result_of < when < _ , A 0 > ( Expr , State , Data ) > :: type ,
typename boost :: result_of < when < _ , A 1 > ( Expr , State , Data ) > :: type ,
Data
) > :: type >
Если<T
>имеет форму<PrimitiveTransform (A0 , A1 , A2 )
>, то<result_type
>это:
<typename boost :: result_of < PrimitiveTransform (
typename boost :: result_of < when < _ , A 0 > ( Expr , State , Data ) > :: type ,
typename boost :: result_of < when < _ , A 1 > ( Expr , State , Data ) > :: type ,
typename boost :: result_of < when < _ , A 2 > ( Expr , State , Data ) > :: type
) > :: type >
Если<T
>имеет форму<PolymorphicFunctionObject (A0 ,…An )
>, то<result_type
>это:
<typename boost :: result_of < PolymorphicFunctionObject (
typename boost :: result_of < when < _ , A 0 > ( Expr , State , Data ) > :: type ,
…
typename boost :: result_of < when < _ , A n > ( Expr , State , Data ) > :: type
> :: type >
Если<T
>имеет форму<PolymorphicFunctionObject (A0 ,…An ...)
>, то пусть<T'
>будет<PolymorphicFunctionObject (A0 ,…An-1 ,S
>
, где<S
> является последовательностью типа, вычисленной из выражения распаковки<An
>, как описано в ссылке для<proto::pack
>.<result_type
>это
<typename proto::call < T '>::impl<Expr,State,Data>::result_type
>
.
impl
public member functions
<result_type operator ( ) ( typename impl :: expr_param expr,
typename impl :: state_param state,
typename impl :: data_param data) const ; >В последующем описании тип<T
>определяется для моделирования концепцииPrimitiveTransform , если<proto::is_transform
>::value
является<true
>.
<proto::call
>::impl::operator():
ведет себя следующим образом:
Если<T
>из формы<PrimitiveTransform
>или<PrimitiveTransform ()
>, то возвращайтесь
<PrimitiveTransform()(expr, state, data) >
.
Если<T
>имеет форму<PrimitiveTransform (A0 )
>, то возврат
<PrimitiveTransform()(
when
<_
,A0 >()(expr, state, data),
state,
sata
) >
Если<T
>имеет форму<PrimitiveTransform (A0 , A1 )
>, то возвращайтесь:
<PrimitiveTransform()(
when
<_
,A0 >()(expr, state, data),
when
<_
,A1 >()(expr, state, data),
Data
) >
Если<T
>имеет форму<PrimitiveTransform (A0 , A1 , A2 )
>, то возврат
<PrimitiveTransform()(
when
<_
,A0 >()(expr, state, data),
when
<_
,A1 >()(expr, state, data),
when
<_
,A2 >()(expr, state, data)
) >
Если<T
>имеет форму<PolymorphicFunctionObject (A0 ,…An )
>, то возвращайтесь:
<PolymorphicFunctionObject()(
when
<_
,A0 >()(expr, state, data),
...
when
<_
,An >()(expr, state, data)
) >
Если<T
>имеет форму<PolymorphicFunctionObject (A0 ,…An ...)
>, то пусть<T'
>будет<PolymorphicFunctionObject (A0 ,…An-1 ,S
>
, где<S
> является последовательностью типа, вычисленной из выражения распаковки<An
>, как описано в ссылке для<proto::pack
>
. Возвращение:
<proto::call
<T'>()(expr, state, data)
>
Статья Struct template impl раздела The Boost C++ Libraries BoostBook Documentation Subset Struct template call может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Struct template call ::