Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Struct template impl

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Struct template call

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Struct template impl

boost::proto::call::impl

Synopsis

// In header: <boost/proto/transform/call.hpp>

template<typename Expr, typename State, typename Data> 
struct impl :  proto::transform_impl<Expr, State, Data> {
  // types
  typedef see-below result_type;
  // public member functions
  result_type operator()(typename impl::expr_param, 
                         typename impl::state_param, 
                         typename impl::data_param) const;
};

Description

impl public types

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

      <
      typenameboost::result_of<PrimitiveTransform(Expr,State,Data)>::type
      >

    • Если<T>имеет форму<PrimitiveTransform(A0)>, то<result_type>это:

      <
      typenameboost::result_of<PrimitiveTransform(
       typenameboost::result_of<when<_,A0>(Expr,State,Data)>::type,
       State,
       Data
      )>::type
      >

    • Если<T>имеет форму<PrimitiveTransform(A0, A1)>, то<result_type>:

      <
      typenameboost::result_of<PrimitiveTransform(
       typenameboost::result_of<when<_,A0>(Expr,State,Data)>::type,
       typenameboost::result_of<when<_,A1>(Expr,State,Data)>::type,
       Data
      )>::type
      >

    • Если<T>имеет форму<PrimitiveTransform(A0, A1, A2)>, то<result_type>это:

      <
      typenameboost::result_of<PrimitiveTransform(
       typenameboost::result_of<when<_,A0>(Expr,State,Data)>::type,
       typenameboost::result_of<when<_,A1>(Expr,State,Data)>::type,
       typenameboost::result_of<when<_,A2>(Expr,State,Data)>::type
      )>::type
      >

    • Если<T>имеет форму<PolymorphicFunctionObject(A0,…An)>, то<result_type>это:

      <
      typenameboost::result_of<PolymorphicFunctionObject(
       typenameboost::result_of<when<_,A0>(Expr,State,Data)>::type,typenameboost::result_of<when<_,An>(Expr,State,Data)>::type
      >::type
      >

    • Если<T>имеет форму<PolymorphicFunctionObject(A0,…An...)>, то пусть<T'>будет<PolymorphicFunctionObject(A0,…An-1,S>, где<S>является последовательностью типа, вычисленной из выражения распаковки<An>, как описано в ссылке для<proto::pack>.<result_type>это

      <
      typenameproto::call<T'>::impl<Expr,State,Data>::result_type
      >

      .

impl public member functions

  1. <
    result_typeoperator()(typenameimpl::expr_paramexpr,
                          typenameimpl::state_paramstate,
                          typenameimpl::data_paramdata)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)
      >


PrevUpHomeNext

Статья Struct template impl раздела The Boost C++ Libraries BoostBook Documentation Subset Struct template call может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Struct template call ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 18:23:45/0.029058933258057/1