...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::when<Grammar, R(A...)>::impl
// In header: <boost/proto/transform/when.hpp> template<typename Expr, typename State, typename Data> struct impl : proto::transform_impl< Expr, State, Data > { // types typedef proto::call<R(A...)> call_; // For exposition only typedef proto::make<R(A...)> make_; // For exposition only typedef typename mpl::if_<proto::is_callable<R>,call_,make_>::type which; // For exposition only typedef typename boost::result_of<which(Expr, State, Data)>::type result_type; // public member functions result_type operator()(typename impl::expr_param, typename impl::state_param, typename impl::data_param) const; };
impl
public member functionsresult_type operator()(typename impl::expr_param expr, typename impl::state_param state, typename impl::data_param data) const;
Evaluate R(A...)
as a transform either with
or with
proto::call<>
depending
on whether proto::make<>
is proto::is_callable
<R>::valuetrue
or false
.
Parameters: |
|
||||||
Requires: |
|
||||||
Returns: |
|