...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<Tag, Domain, A...> — Metafunction that computes the return type of the
proto::make_expr()
function, within the specified domain.
// In header: <boost/proto/make_expr.hpp> template<typename Tag, typename Domain, typename... A> struct make_expr<Tag, Domain, A...> { // types typedef see-below type; };
Computes the return type of the
proto::make_expr()
function.
make_expr
public
types
Let
be defined such that:
WRAP<X>
If X
is Y &
or (possibly cv-qualified) boost::reference_wrapper<Y>
,
then
is equivalent to
WRAP<X>
proto::result_of::as_child<Y, Domain>
.
Otherwise,
is equivalent to
WRAP<X>
proto::result_of::as_expr<X, Domain>
.
If proto::wants_basic_expr<typename Domain::proto_generator>::value
is true, then let
be
E
proto::basic_expr
; otherwise,
let
be
E
proto::expr
.
If Tag
is
proto::tag::terminal
, then
type
is a typedef for
typename
.
WRAP<A0>
::type
Otherwise, type
is a typedef for
boost::result_of<Domain(
E
<
Tag, proto::listN<
typename WRAP<A>
::type...> >)>::type