Boost logo

Boost :

From: Arkadiy Vertleyb (vertleyb_at_[hidden])
Date: 2006-01-07 16:54:38

"Tobias Schwinger" <tschwinger_at_[hidden]> wrote

> Recently I discovered that setting LIMIT_SIZE > 117 with MSVC8 produces an
> ...typeof/vector.hpp(58) : fatal error C1009: compiler limit :
macros nested
> too deeply
> That's quite unfortunate because frameworks such as Spirit easily produce
> expressions too complex for this setting.
> Well, we're at the preprocessor's and not the compiler's limits so we can
> something about it:
> Changing the outer loops in typeof/vector.hpp to use
> instead of BOOST_PP_REPEAT buys us a new maximum of 238 (and the same
error for
> higher values, so it's still the preprocessor's limit).

OK, but this means we have to change the syntax of REGISTER macros to do
something like:

#include BOOST_TYPEOF_REGISTER_...(...)

I remember you suggested this during the review. I am still not quite
comfortable with the idea...

> While testing my hack described above I recognized that preprocessing
> typeof/vector.hpp takes unpleasantly long, so I decided to kill two birds
with one
> stone by improving performance and pushing the limits even further. That
is making
> typeof/vector.hpp load preprocessed files for LIMIT_SIZE e {
50,100,150,200,250 }.
> For the maximum: 250 be it - it's getting quite close to the limits of
> Boost.Preprocessor (and I still don't know the maximum number of template
> parameters allowed with MSVC8 ;-).
> Here's my modifications:

How much faster is it?


Boost list run by bdawes at, gregod at, cpdaniel at, john at