...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
The Actor is the main concept behind the library. Actors are function objects. An actor can accept 0 to PHOENIX_LIMIT arguments.
Note | |
---|---|
You can set PHOENIX_LIMIT, the predefined maximum arity an actor can take. By default, PHOENIX_LIMIT is set to 10. |
Phoenix supplies an actor class template whose specializations model the Actor concept. actor has one template parameter, Eval, that supplies the smarts to evaluate the resulting function.
template <typename Eval> struct actor : Eval { return_type operator()() const; template <typename T0> return_type operator()(T0& _0) const; template <typename T0, typename T1> return_type operator()(T0& _0, T1& _1) const; //... };
The actor class accepts the arguments through a set of function call operators for 0 to PHOENIX_LIMIT arities (Don't worry about the details, for now. Note, for example, that we skimp over the details regarding return_type). The arguments are then forwarded to the actor's Eval for evaluation.