...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::unpack_expr — Construct an expression of the requested tag type with a domain and with children from the specified Fusion Forward Sequence.
// In header: <boost/proto/make_expr.hpp> template<typename Tag, typename Sequence> typename proto::result_of::unpack_expr<Tag, Sequence const>::type const unpack_expr(Sequence const & sequence); template<typename Tag, typename Domain, typename Sequence> typename proto::result_of::unpack_expr<Tag, Domain, Sequence const>::type const unpack_expr(Sequence const & sequence);
This function template may be invoked either with or without specifying a
Domain
argument. If no domain is specified, the domain is
deduced by examining in order the domains of the elements of sequence
and taking the first that is not
, if any such domain
exists, or proto::default_domain
otherwise.
proto::default_domain
Let s
be a Fusion Random Access Sequence equivalent to
sequence
.
Let
, where
WRAP
<N>(s)s
has type S
, be defined such that:
If fusion::result_of::value_at_c<S,N>::type
is a reference,
is equivalent to
WRAP
<N>(s)
.
proto::as_child
<Domain>(fusion::at_c<N>(s))
Otherwise,
is equivalent to
WRAP
<N>(s)
.
proto::as_expr
<Domain>(fusion::at_c<N>(s))
Let
be defined as
MAKE
<Tag>(a...)
where
proto::expr
<Tag,
proto::listN
<A...> >::make(a...)Ax
is the type of
ax
.
Parameters: |
|
||
Returns: |
|