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

Struct template impl

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

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

Synopsis

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

template<typename Expr, typename State, typename Data> 
struct impl :  proto::transform_impl<Expr, State, Data> {
  // types
  typedef typename Expr::tag_type Tag;          // For exposition only
  typedef see-below               result_type;
  // public member functions
  result_type operator()(typename impl::expr_param, 
                         typename impl::state_param, 
                         typename impl::data_param) const;
  // public data members
  static Expr s_expr;  // For exposition only
  static State s_state;  // For exposition only
  static Data s_data;  // For exposition only
};

Description

Пусть<OP>будет оператором C++, соответствующим<Expr::proto_tag>. Например, если<Tag>это< proto::tag::plus>, пусть< OP>будет<+>.

Поведение этого класса определяется в терминах C++0x.<decltype>Ключевые слова. В системах, где это ключевое слово недоступно, Proto использует Boost. Тип библиотеки для приближения поведения.

impl public types

  1. typedefсм.-нижеresult_type;

    • Если<Tag>соответствует оператору унарного префикса, то тип результата

      <
      decltype(
       OPGrammar()(proto::child(s_expr),s_state,s_data)
      )
      >

    • Если<Tag>соответствует унарному оператору постфикса, то тип результата

      <
      decltype(
       Grammar()(proto::child(s_expr),s_state,s_data)OP
      )
      >

    • Если<Tag>соответствует двоичному оператору фиксации, то тип результата

      <
      decltype(
       Grammar()(proto::left(s_expr),s_state,s_data)OP
       Grammar()(proto::right(s_expr),s_state,s_data)
      )
      >

    • Если<Tag>является< proto::tag::subscript >, то тип результата

      <
      decltype(
       Grammar()(proto::left(s_expr),s_state,s_data)[
       Grammar()(proto::right(s_expr),s_state,s_data)]
      )
      >

    • Если<Tag>< proto::tag::if_else_ >, то результат типа

      <
      decltype(
       Grammar()(proto::child_c<0>(s_expr),s_state,s_data)?
       Grammar()(proto::child_c<1>(s_expr),s_state,s_data):
       Grammar()(proto::child_c<2>(s_expr),s_state,s_data)
      )
      >

    • Если<Tag>< proto::tag::function >, то результат типа

      <
      decltype(
       Grammar()(proto::child_c<0>(s_expr),s_state,s_data)(
       Grammar()(proto::child_c<1>(s_expr),s_state,s_data),
       ...
       Grammar()(proto::child_c<N>(s_expr),s_state,s_data))
      )
      >

impl public member functions

  1. <
    result_typeoperator()(typenameimpl::expr_paramexpr,
                          typenameimpl::state_paramstate,
                          typenameimpl::data_paramdata)const;
    >< proto::_default>::impl::operator()
    • Если<Tag>соответствует унарному префиксному оператору, то возвращайте

      <
      OP Grammar()(proto::child(expr), state, data)
      >

    • Если<Tag>соответствует унарному оператору постфикса, то возврат

      <
      Grammar()(proto::child(expr), state, data) OP
      >

    • Если<Tag>соответствует двоичному оператору фиксации, то возврат

      <
      Grammar()(proto::left(expr), state, data) OP
      Grammar()(proto::right(expr), state, data)
      >

    • Если<Tag>< proto::tag::subscript>, то возвращайтесь

      <
      Grammar()(proto::left(expr), state, data) [
      Grammar()(proto::right(expr), state, data) ]
      >

      .
    • Если<Tag>< proto::tag::if_else_>, то возвращайтесь

      <
      Grammar()(proto::child_c<0>(expr), state, data) ?
      Grammar()(proto::child_c<1>(expr), state, data) :
      Grammar()(proto::child_c<2>(expr), state, data)
      >

      .
    • Если<Tag>< proto::tag::function>, то возвращайтесь

      <
      Grammar()(proto::child_c<0>(expr), state, data) (
      Grammar()(proto::child_c<1>(expr), state, data),
      ...
      Grammar()(proto::child_c<N>(expr), state, data) )
      >

      .

PrevUpHomeNext

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




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



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


реклама


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

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