| Home | Libraries | People | FAQ | More

## Concept PrimitiveTransform

PrimitiveTransform

## Description

A PrimitiveTransform is a class type that has a nested class template called `impl<>` that takes three template parameters representing an expression type, a state type and a data type. Specializations of the nested impl template are ternary monomorphic function objects that accept expression, state, and data parameters. A PrimitiveTransform is also a PolymorphicFunctionObject implemented in terms of the nested `impl<>` template.

## Associated types

- result_type

      typename Fn::template impl<Expr, State, Data>::result_type

  The return type of the overloaded function call operator.

## Notation

Fn
  A type playing the role of primitive-transform-type in the PrimitiveTransform concept.
Expr
  A type playing the role of expression-type in the PrimitiveTransform concept.
State
  A type playing the role of state-type in the PrimitiveTransform concept.
Data
  A type playing the role of data-type in the PrimitiveTransform concept.
`fn`
  Object of type Fn
`expr`
  Object of type Expr
`state`
  Object of type State
`data`
  Object of type Data

## Valid expressions

Name | Expression | Type | Semantics
--- | --- | --- | ---
Polymorphic Function Call 1 | fn(expr) | result_type | Applies the transform.
Polymorphic Function Call 2 | fn(expr, state) | result_type | Applies the transform.
Polymorphic Function Call 3 | fn(expr, state, data) | result_type | Applies the transform.
Monomorphic Function Call | typename Fn::template impl< Expr, State, Data >()(expr, state, data) | result_type | Applies the transform.

## Models

- boost::proto::_child_c< 0 >