1[/==============================================================================
2    Copyright (C) 2001-2010 Joel de Guzman
3    Copyright (C) 2001-2005 Dan Marsden
4    Copyright (C) 2001-2010 Thomas Heller
5
6    Distributed under the Boost Software License, Version 1.0. (See accompanying
7    file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
8===============================================================================/]
9
10[section Actor]
11
12The `Actor` is the main concept behind the library. Actors are function objects.
13An actor can accept 0 to `BOOST_PHOENIX_LIMIT` arguments.
14
15[note You can set `BOOST_PHOENIX_LIMIT`, the predefined maximum arity an
16actor can take. By default, `BOOST_PHOENIX_LIMIT` is set to 10.]
17
18Phoenix supplies an `actor` class template whose specializations
19model the `Actor` concept.  `actor` has one template parameter, `Expr`,
20that supplies the underlying expression to evaluate.
21
22    template <typename Expr>
23    struct actor
24    {
25        return_type
26        operator()() const;
27
28        return_type
29        operator()();
30
31        template <typename T0>
32        return_type
33        operator()(T0& _0) const;
34
35        template <typename T0>
36        return_type
37        operator()(T0 const& _0) const;
38
39        template <typename T0>
40        return_type
41        operator()(T0& _0);
42
43        template <typename T0>
44        return_type
45        operator()(T0 const& _0);
46
47
48        //...
49    };
50
51The actor class accepts the arguments through a set of function call operators
52for 0 to `BOOST_PHOENIX_LIMIT` arities (Don't worry about the details, for now. Note, for example,
53that we skimed over the details regarding `return_type`). The arguments
54are then forwarded to the actor's `Expr` for evaluation.
55
56[endsect]
57
58