
11 Jan
2012
11 Jan
'12
7:06 p.m.
On Wednesday, January 11, 2012 10:28:25 lcaminiti wrote:
Hello all,
Many of Boost macro APIs PP_CAT symbols with either __LINE__ or __COUNTER__ to make them unique (MPL_STATIC_ASSERT, SCOPE_EXIT, etc). AFAIK, __LINE__ is C++03 standard while __COUNTER__ is only a MSVC extension. I think using __COUNTER__ instead of __LINE__ might allow to expand a macro multiple times on the same line... but a part from that:
What's the reason for using __COUNTER__ on MSVC instead of just using __LINE__ for all compilers?
MSVC has problems with expanding __LINE__ when precompiled headers are used. Basically, __COUNTER__ is the only practical option with this compiler when the macro is to be expanded in a header.