[proto] docs: Calc2 improvement proposal

Hi! First of all: This is a very nice example. Fantastic idea to introduce index information stored in the terminals at this place in the docs - perfect. If you define arg as template<int I> struct arg {}; and change the code accordingly the reader is not in need to know anything about mpl::int_ and IMHO the code template <int I> double operator ()(proto::tag::terminal, arg<I>) const { return d[ I - 1 ]; } is easier to read than template<typename I> double operator ()(proto::tag::terminal, arg<I>) const { return d[ I() - 1 ]; } Note that this should be written for beginners like me, so one catches the idea immediately without taking the extra path to mpl here. Markus

Markus Werle wrote:
First of all: This is a very nice example. Fantastic idea to introduce index information stored in the terminals at this place in the docs - perfect.
Thanks.
If you define arg as
template<int I> struct arg {};
and change the code accordingly the reader is not in need to know anything about mpl::int_ and IMHO the code
<snip> Right, this is a good suggestion. And arg should be renamed to placeholder to avoid confusion with proto::arg and to make it consistent with Calc3. And I should make the same change to Calc1. Note however that in the Calc3 example, the template parameter must stay mpl::int_ instead of an int. Otherwise, the CalculatorGrammar won't work. Non-type template parameters are the bane of metaprogramming. -- Eric Niebler Boost Consulting www.boost-consulting.com
participants (2)
-
Eric Niebler
-
Markus Werle