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 ::