| Home | Libraries | People | FAQ | More

## Struct template impl

boost::proto::when<Grammar, >::impl

## Synopsis

    // In header: <boost/proto/transform/when.hpp>

    template<typename Expr, typename State, typename Data>
    struct impl :
        boost::remove_reference<
          typename mpl::eval_if_c<
            proto::result_of::has_env_var<Data, proto::transforms_type>::value,
            proto::result_of::env_var<Data, proto::transforms_type>,
            proto::result_of::env_var<Data, proto::data_type>
          >::type
        >::type
          ::template when< Grammar >
            ::template impl< Expr, State, Data >
    {
    };

## Description

The implementation of the `impl` struct depends on whether the `Data` parameter is a transform environment that contains a value corresponding to the proto::transforms_type key. If so, that value is treated as a map from rules to transforms. Otherwise, the `Data` type itself is treated as such a map.