Boost C++ 库

...世界上最受推崇、设计最精湛的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码规范

结构体模板 or_ - Boost C++ 函数库
PrevUpHomeNext

结构体模板 or_

boost::proto::or_ — 用于匹配一组备选语法中的一个。备选项按顺序尝试以避免歧义。当用作转换时,proto::or_<> 应用与匹配表达式的第一个语法关联的转换。

提要

// In header: <boost/proto/matches.hpp>

template<typename... G> 
struct or_ :  proto::transform<or_<G...> > {
  // types
  typedef or_ proto_grammar;

  // member classes/structs/unions
  template<typename Expr, typename State, typename Data> 
  struct impl :  proto::transform_impl< Expr, State, Data > {
    // types
    typedef unspecified result_type;

    // public member functions
    result_type operator()(typename impl::expr_param, 
                           typename impl::state_param, 
                           typename impl::data_param) const;
  };
};

描述

表达式类型 E 匹配 proto::or_<G0,G1,...Gn>,如果 E 匹配任何 Gx,其中 x[0,n] 中。

当使用 proto::or_<G0,G1,...Gn> 作为转换,对类型为 E 的表达式 e、状态 s 和数据 d 应用时,它等效于 Gx()(e, s, d),其中 x 是满足 proto::matches<E, Gx>::valuetrue 的最小数字。

结构体模板 proto::or_<> 接受的最大模板参数数量由 BOOST_PROTO_MAX_LOGICAL_ARITY 宏控制。


PrevUpHomeNext