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

Struct template matches
PrevUpHomeNext

Struct template matches

boost::proto::matches — A Boolean metafunction that evaluates whether a given expression type matches a grammar.

Synopsis

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

template<typename Expr, typename Grammar> 
struct matches :  mpl::bool_<true-or-false> {
};

Description

proto::matches inherits from mpl::true_ if Expr::proto_grammar matches Grammar::proto_grammar, and from mpl::false_ otherwise.

Non-terminal expressions are matched against a grammar according to the following rules:

A terminal expression proto::basic_exprproto::term > matches a grammar proto::basic_exprproto::term > if BT is proto::_ or AT and one of the following is true:

A type B lambda-matches A if one of the following is true:

  • B is A

  • B is the wildcard pattern, proto::_

  • B is T0,...Bn> and A is T0,...An> and for each x in [0,n], Ax and Bx are types such that Ax lambda-matches Bx


PrevUpHomeNext