| Home | Libraries | People | FAQ | More

## Actors

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.