
Boost : 
From: Paul Mensonides (pmenso57_at_[hidden])
Date: 20020801 18:12:58
> >>If Boost.Tuple was PP'ified, nobody would need to do that.
> >
> > <snickers as he considers the EDG preprocessor expanding 10,000 template
> > parameters>
>
> yeah, yeah :)
> That's a problem with the MPL also: if anyone really wants to make a MPL
> list (or vector) of 10,000 elements, EDGbased compilers are not going
> to be a lot of help.
This is no longer so relevant with the advent of fileiteration that the PP
library now possesses. While, of course, the library cannot expand 10,000
template parameters directly, it can expand 100and do it fast.
Also, it depends heavily on how something is implemented. For example:
#define ABC(x) ABC_D(x)
#define ABC_D(x) XYZ(x)
#define XYZ(x) XYZ_D(x)
#define XYZ_D(x) x
...is *much* more efficient in most contexts than this:
#define ABC(x) XYZ(x)
#define XYZ(x) x
I don't know why or see any logical reason for it, but that is the way it is.
If *every* macro had a delay like the above, before using its arguments, things
would get even faster yet. :
BTW, I have an implementation that I'm 'perfecting' of highprecision arithmetic
sitting on my computer. It implements full tendigit arithmetic. Addition,
subtraction, and multiplication are all constanttime operations and fasteven
on EDG. Division (and modulus) is not constanttime and not as fast, but it
should still be usable on EDG if necessary. With those primitives, the
preprocessor library *could* generate 10,000 template parametersbut I don't
recommend it. :)
Paul Mensonides
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk