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

Struct template impl

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

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

Synopsis

// In header: <boost/proto/transform/make.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см.-нижерезультат_type;

    proto::make<T>::impl<Expr, State, Data>::result_typeвычисляется следующим образом:

    ЕслиTявляетсяОбъектным преобразованиемформыObject(A0,…An)илиObject(A0,…An...), то пустьOбудет типом возврата.Object. В противном случаеOбудетT. Затемresult_typeтипдеф вычисляется следующим образом:

    • Еслиproto::is_transform<O>::valuetrue, то пусть результат будет boost::result_of<proto::when<_, O>(Expr, State, Data)>::type . Отметим, что произошла замена.

    • Если<O>является шаблоном, подобным<proto::noinvoke<S<X0,…Xn> >>, то тип результата рассчитывается следующим образом:
      • Для каждого<i>в<[0,n]>пусть< Xi' >будет< boost::result_of<proto::make<Xi>(Expr, State, Data)>::type >(который оценивает эту процедуру рекурсивно). Отметим, что произошла замена. (В этом случае Прото просто предполагает, что произошла замена ради эффективности компиляции времени. В противном случае не было бы смысла<proto::noinvoke<>>.

      • Тип результата< S<X0',…Xn'> >.

    • Если<O>является шаблоном<S<X0,…Xn>>, то тип результата рассчитывается следующим образом:
      • Для каждого<i>в<[0,n]>пусть< Xi' >будет< boost::result_of<proto::make<Xi>(Expr, State, Data)>::type >(который оценивает эту процедуру рекурсивно). Обратите внимание, были ли какие-либо замены в ходе этой операции.

      • Если какие-либо замены имели место на вышеуказанной стадии и< S<X0',…Xn'> >имеет вложенный<type>типдеф, то тип результата< S<X0',…Xn'>::type >.

      • В противном случае тип результата< S<X0',…Xn'> >

        .
    • В противном случае тип результата<O>, и обратите внимание, что замены не произошло.

    Обратите внимание, что<proto::when<>>реализуется в терминах<proto::call<>>и<proto::make<>>, поэтому вышеуказанная процедура оценивается рекурсивно.

impl public member functions

  1. <
    result_typeoperator()(typenameimpl::expr_paramexpr,
                          typenameimpl::state_paramstate,
                          typenameimpl::data_paramdata)const;
    >

    < proto::make>::impl::operator()ведет себя следующим образом:

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

      • Если< proto::is_aggregate>::значение<true>, то построить и вернуть объект<that>следующим образом:

        <
        result_type that = {
         proto::when<_, A0>()(expr, state, data),
          …
         proto::when<_, An>()(expr, state, data)
        };
        >

      • В противном случае, построить и вернуть объект<that>следующим образом:

        <
        result_type that(
         proto::when<_, A0>()(expr, state, data),
          …
         proto::when<_, An>()(expr, state, data)
        );
        >

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

      <
      proto::make<T'>()(expr, state, data)
      >

    • В противном случае, построить и вернуть объект<that>следующим образом:

      <
      result_type that = result_type();
      >


PrevUpHomeNext

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




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



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


реклама


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

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 17:55:05/0.0091261863708496/1