
Brad Spencer <spencer@infointeractive.com> writes:
On Fri, Apr 02, 2004 at 06:02:30PM -0500, David Abrahams wrote:
Brad Spencer <spencer@infointeractive.com> writes:
In iterator/iterator_facade.hpp, there are a lot of template arguments that have names like "R1" and "D2". Unfortunately, these "all caps" tokens are fodder for collisions with macros. On i386-pc-solaris2.8, for some reason, "R1" is defined to be "9" (it's some kind of register identification macro)
In what header is it defined? Or does it come from the compiler?
It's in <ia32/sys/reg.h>, which I don't include directly, but ends up in the compilation. It looks like it's inside some guards (again, which I am not setting directly), but they must resolve to true.
There is such a(n informal) policy. Macros with a single capital letter are traditionally used for template parameters, and not normally used by system headers.
Ok. In this case the macros have a single capital letter and a number.
Just using mixed case (or lower case) is probably enough.
I'm not sure what we should do about this. Adopting that policy would require changes to nearly every single Boost header.
Hmmm. What should I do then?
At the very least we ought to find all of the R1,...R9 identifiers in Boost and fix them. -- Dave Abrahams Boost Consulting http://www.boost-consulting.com