From: Paul Mensonides (pmenso57_at_[hidden])
Date: 2002-05-12 16:21:38


(part 2)

This compiles in 12 seconds on my 600MHz machine with Comeau C++ (with
BOOST_PYTHON_MAX_ARITY == 50 *not* 15)--also, the entire preprocessor output is
debuggable. It took 50 seconds with BOOST_PYTHON_MAX_ARITY == 100, which is a
bit much, but then that is a ridiculously high number of parameters.
(Incidently, if BOOST_PYTHON_MAX_ARITY == 15, it takes 2.5 seconds to compile.)
I attached the preprocessor output from Comeau C++ (w/BOOST_PYTHON_MAX_ARITY ==
15 and everything but the expansion of this stuff for brevity).

For further testing, I put an underscore in front of some stuff like this:

template< _ class R, class O /* etc. */>

In other words, an obvious syntax error. I then ran a preprocessor pass, and
then compiled the output. These are the error messages I got:

"arg_tuple_size.hpp[0][0]", line 84: error: identifier "_" is undefined
    template<_ class R, class O >
             ^

"arg_tuple_size.hpp[0][0]", line 84: error: invalid combination of type
specifiers
    template<_ class R, class O >
               ^

"arg_tuple_size.hpp[0][0]", line 84: error: constant "<unnamed>" is not used
    in template argument list of class template
    "boost::python::detail::arg_tuple_size<boost::python::detail::R (O::*)()>"
        template<_ class R, class O >
                          ^

"arg_tuple_size.hpp[0][1]", line 84: error: identifier "_" is undefined
    template<_ class R, class O >
             ^

"arg_tuple_size.hpp[0][1]", line 84: error: invalid combination of type
specifiers
    template<_ class R, class O >
               ^

"arg_tuple_size.hpp[0][1]", line 84: error: constant "<unnamed>" is not used
    in template argument list of class template
    "boost::python::detail::arg_tuple_size<boost::python::detail::R (O::*)()>"
        template<_ class R, class O >
                          ^

// etc.

Note that the 'filename' shows the depth of iteration and the current iterator
values. Hows that for debuggable?

Paul Mensonides