...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::_default — A PrimitiveTransform that gives expressions their usual C++ behavior
// In header: <boost/proto/transform/default.hpp>
template<typename Grammar = unspecified
>
struct _default : proto::transform< _default<Grammar> > {
// member classes/structs/unions
template<typename Expr, typename State, typename Data>
struct impl : proto::transform_impl<Expr, State, Data> {
// types
typedef typename Expr::tag_type Tag; // For exposition only
typedef see-below result_type;
// public member functions
result_type operator()(typename impl::expr_param,
typename impl::state_param,
typename impl::data_param) const;
// public data members
static Expr s_expr; // For exposition only
static State s_state; // For exposition only
static Data s_data; // For exposition only
};
};
For the complete description of the behavior of the proto::_default
transform, see the documentation for the nested
proto::_default::impl<>
class template.
When used without specifying a Grammar
parameter,
proto::_default
behaves as if the parameter were
proto::_default<>
.