| Home | Libraries | People | FAQ | More

## Struct template call

boost::proto::call — Make the given CallableTransform into a PrimitiveTransform.

## Synopsis

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

    template<typename T>
    struct call :  proto::transform< call<T> > {
      // member classes/structs/unions
      template<typename Expr, typename State, typename Data>
      struct impl :  proto::transform_impl<Expr, State, Data> {
        // types
        typedef see-below result_type;

        // public member functions
        result_type operator()(typename impl::expr_param,
                               typename impl::state_param,
                               typename impl::data_param) const;
      };
    };

## Description

The purpose of `proto::call<>` is to annotate a transform as callable so that `proto::when<>` knows how to apply it. The template parameter must be either a PrimitiveTransform or a CallableTransform; that is, a function type for which the return type is a callable PolymorphicFunctionObject.

For the complete description of the behavior of the `proto::call<>` transform, see the documentation for the nested `proto::call::impl<>` class template.