| Home | Libraries | People | FAQ | More

## Struct template transform

boost::proto::transform — Inherit from this to make your type a PrimitiveTransform.

## Synopsis

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

    template<typename PrimitiveTransform>
    struct transform {
      // types
      typedef PrimitiveTransform transform_type;
      template<typename This, typename Expr>
      struct result<This(Expr)> {
        // types
        typedef typename PrimitiveTransform::template impl< Expr, unspecified, unspecified >::result_type type;
      };
      template<typename This, typename Expr, typename State>
      struct result<This(Expr, State)> {
        // types
        typedef typename PrimitiveTransform::template impl< Expr, State, unspecified >::result_type type;
      };
      template<typename This, typename Expr, typename State, typename Data>
      struct result<This(Expr, State, Data)> {
        // types
        typedef typename PrimitiveTransform::template impl< Expr, State, Data >::result_type type;
      };

      // public member functions
      template<typename Expr>
        typename PrimitiveTransform::template impl<Expr &, unspecified, unspecified>::result_type
        operator()(Expr &) const;
      template<typename Expr, typename State>
        typename PrimitiveTransform::template impl<Expr &, State &, unspecified>::result_type
        operator()(Expr &, State &) const;
      template<typename Expr, typename State>
        typename PrimitiveTransform::template impl<Expr &, State const &, unspecified>::result_type
        operator()(Expr &, State const &) const;
      template<typename Expr, typename State, typename Data>
        typename PrimitiveTransform::template impl<Expr &, State &, Data &>::result_type
        operator()(Expr &, State &, Data &) const;
      template<typename Expr, typename State, typename Data>
        typename PrimitiveTransform::template impl<Expr &, State const &, Data &>::result_type
        operator()(Expr &, State const &, Data &) const;
    };

## Description

### `transform` public member functions

1.     template<typename Expr>
         typename PrimitiveTransform::template impl<Expr &, unspecified, unspecified>::result_type
         operator()(Expr & expr) const;

   Returns: | `typename PrimitiveTransform::template impl<Expr &, `unspecified`, `unspecified`>()(expr, `unspecified`, `unspecified`)`

2.     template<typename Expr, typename State>
         typename PrimitiveTransform::template impl<Expr &, State &, unspecified>::result_type
         operator()(Expr & expr, State & state) const;

   Returns: | `typename PrimitiveTransform::template impl<Expr &, State &, `unspecified`>()(expr, state, `unspecified`)`

3.     template<typename Expr, typename State>
         typename PrimitiveTransform::template impl<Expr &, State const &, unspecified>::result_type
         operator()(Expr & expr, State const & state) const;

   Returns: | `typename PrimitiveTransform::template impl<Expr &, State const &, `unspecified`>()(expr, state, `unspecified`)`

4.     template<typename Expr, typename State, typename Data>
         typename PrimitiveTransform::template impl<Expr &, State &, Data &>::result_type
         operator()(Expr & expr, State & state, Data & data) const;

   Returns: | `typename PrimitiveTransform::template impl<Expr &, State &, Data &>()(expr, state, data)`

5.     template<typename Expr, typename State, typename Data>
         typename PrimitiveTransform::template impl<Expr &, State const &, Data &>::result_type
         operator()(Expr & expr, State const & state, Data & data) const;

   Returns: | `typename PrimitiveTransform::template impl<Expr &, State const &, Data &>()(expr, state, data)`