Boost  v1.57.0
doxygen for www.boost.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
make_expr.hpp File Reference

Definition of the make_expr() and unpack_expr() utilities for building Proto expression nodes from child nodes or from a Fusion sequence of child nodes, respectively. More...

#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/arithmetic/inc.hpp>
#include <boost/preprocessor/arithmetic/dec.hpp>
#include <boost/preprocessor/arithmetic/sub.hpp>
#include <boost/preprocessor/punctuation/comma_if.hpp>
#include <boost/preprocessor/iteration/iterate.hpp>
#include <boost/preprocessor/facilities/intercept.hpp>
#include <boost/preprocessor/repetition/enum.hpp>
#include <boost/preprocessor/repetition/enum_params.hpp>
#include <boost/preprocessor/repetition/enum_binary_params.hpp>
#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
#include <boost/preprocessor/repetition/enum_trailing_params.hpp>
#include <boost/preprocessor/repetition/enum_trailing_binary_params.hpp>
#include <boost/preprocessor/repetition/repeat.hpp>
#include <boost/ref.hpp>
#include <boost/mpl/if.hpp>
#include <boost/mpl/assert.hpp>
#include <boost/mpl/eval_if.hpp>
#include <boost/utility/enable_if.hpp>
#include <boost/type_traits/add_const.hpp>
#include <boost/type_traits/add_reference.hpp>
#include <boost/type_traits/remove_cv.hpp>
#include <boost/proto/proto_fwd.hpp>
#include <boost/proto/traits.hpp>
#include <boost/proto/domain.hpp>
#include <boost/proto/generate.hpp>
#include <boost/fusion/include/at_c.hpp>
#include <boost/fusion/include/begin.hpp>
#include <boost/fusion/include/next.hpp>
#include <boost/fusion/include/value_of.hpp>
#include <boost/fusion/include/size.hpp>
#include <boost/proto/detail/poly_function.hpp>
#include <boost/proto/detail/deprecated.hpp>
#include <boost/proto/detail/unpack_expr_.hpp>
#include <boost/proto/detail/make_expr_.hpp>
#include <boost/proto/detail/make_expr_funop.hpp>
#include <boost/proto/detail/make_expr.hpp>
Include dependency graph for make_expr.hpp:
This graph shows which files directly or indirectly include this file:

Classes

struct  boost::proto::detail::protoify< T, Domain >
 
struct  boost::proto::detail::protoify< T &, Domain >
 
struct  boost::proto::detail::protoify< boost::reference_wrapper< T >, Domain >
 
struct  boost::proto::detail::protoify< boost::reference_wrapper< T > const, Domain >
 
struct  boost::proto::result_of::make_expr< Tag,, Void1, Void2 >
 Metafunction that computes the return type of the make_expr() function, with a domain deduced from the domains of the children. More...
 
struct  boost::proto::result_of::make_expr< Tag, Domain, typename Domain::proto_is_domain_ >
 Metafunction that computes the return type of the make_expr() function, within the specified domain. More...
 
struct  boost::proto::result_of::unpack_expr< Tag, Sequence, Void1, Void2 >
 Metafunction that computes the return type of the unpack_expr() function, with a domain deduced from the domains of the children. More...
 
struct  boost::proto::result_of::unpack_expr< Tag, Domain, Sequence, typename Domain::proto_is_domain_ >
 Metafunction that computes the return type of the unpack_expr() function, within the specified domain. More...
 
struct  boost::proto::functional::make_expr< Tag, Domain >
 A callable function object equivalent to the proto::make_expr() function. More...
 
struct  boost::proto::functional::make_expr< Tag, Domain >::result< Sig >
 
struct  boost::proto::functional::make_expr< Tag, Domain >::result< This(A0)>
 
struct  boost::proto::functional::make_expr< Tag, Domain >::impl<>
 INTERNAL ONLY. More...
 
struct  boost::proto::functional::unpack_expr< Tag, Domain >
 A callable function object equivalent to the proto::unpack_expr() function. More...
 
struct  boost::proto::functional::unpack_expr< Tag, Domain >::result< Sig >
 
struct  boost::proto::functional::unpack_expr< Tag, Domain >::result< This(Sequence)>
 
struct  boost::proto::is_callable< functional::make_expr< Tag, Domain > >
 INTERNAL ONLY. More...
 
struct  boost::proto::is_callable< functional::unpack_expr< Tag, Domain > >
 INTERNAL ONLY. More...
 

Namespaces

 boost
 Duration formatting facet for input.
 
 boost::proto
 
 boost::proto::detail
 
 boost::proto::result_of
 
 boost::proto::functional
 

Macros

#define BOOST_PROTO_AS_CHILD_TYPE(Z, N, DATA)
 INTERNAL ONLY. More...
 
#define BOOST_PROTO_AS_CHILD(Z, N, DATA)
 INTERNAL ONLY. More...
 

Functions

template<typename Tag , typename A0 >
BOOST_FORCEINLINE
lazy_disable_if< is_domain< A0 >
, result_of::make_expr< Tag,
A0 const > >::type const 
boost::proto::make_expr (A0 const &a0)
 Construct an expression of the requested tag type with a domain and with the specified arguments as children. More...
 
template<typename Tag , typename Domain , typename C0 >
BOOST_FORCEINLINE
result_of::make_expr< Tag,
Domain, C0 const >::type
const 
boost::proto::make_expr (C0 const &c0)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
template<typename Tag , typename Sequence >
BOOST_FORCEINLINE
lazy_disable_if< is_domain
< Sequence >
, result_of::unpack_expr< Tag,
Sequence const > >::type
const 
boost::proto::unpack_expr (Sequence const &sequence)
 Construct an expression of the requested tag type with a domain and with childres from the specified Fusion Forward Sequence. More...
 
template<typename Tag , typename Domain , typename Sequence2 >
BOOST_FORCEINLINE
result_of::unpack_expr< Tag,
Domain, Sequence2 const >
::type const 
boost::proto::unpack_expr (Sequence2 const &sequence2)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 

Detailed Description

Definition of the make_expr() and unpack_expr() utilities for building Proto expression nodes from child nodes or from a Fusion sequence of child nodes, respectively.

Macro Definition Documentation

#define BOOST_PROTO_AS_CHILD (   Z,
  N,
  DATA 
)
Value:
, BOOST_PP_TUPLE_ELEM(3, 2, DATA) \
>()(BOOST_PP_CAT(BOOST_PP_TUPLE_ELEM(3, 1, DATA), N)) \
Definition: make_expr.hpp:77
#define BOOST_PP_CAT(a, b)
Definition: cat.hpp:24
#define N
Definition: forward_adapter.hpp:198
#define BOOST_PP_TUPLE_ELEM(size, n, tuple)
Definition: elem.hpp:57

INTERNAL ONLY.

#define BOOST_PROTO_AS_CHILD_TYPE (   Z,
  N,
  DATA 
)
Value:
, BOOST_PP_TUPLE_ELEM(3, 2, DATA) \
Definition: make_expr.hpp:77
#define BOOST_PP_CAT(a, b)
Definition: cat.hpp:24
#define N
Definition: forward_adapter.hpp:198
#define BOOST_PP_TUPLE_ELEM(size, n, tuple)
Definition: elem.hpp:57
result_traits< R, F >::type result_type
Definition: bind_template.hpp:15

INTERNAL ONLY.