...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::proto::result_of::make_expr — Metafunction that computes the return type of the
proto::make_expr()
function, with a domain deduced from the domains of the children.
// In header: <boost/proto/make_expr.hpp>
template<typename Tag, typename... A>
struct make_expr {
// types
typedef domain-deduced-from-child-types
D;
typedef typename proto::result_of::make_expr<Tag, D, A...>::type type;
};
Computes the return type of the
proto::make_expr()
function.
In this specialization, the domain is deduced from the domains of the child types.
If proto::is_domain<A0>::value
is true
, then another specialization is selected.
make_expr
public
types
typedef domain-deduced-from-child-types
D;
For each x
in [0,N)
(proceeding in order beginning with x=0
), if
proto::domain_of<Ax>::type
is not
proto::default_domain
, then
D
is
proto::domain_of<Ax>::type
.
Otherwise, D
is
proto::default_domain
.