
18 Jun
2007
18 Jun
'07
12:55 a.m.
Tobias Schwinger <tschwinger <at> isonews2.com> writes:
Yep, here's another dirty trick :
#include <boost/preprocessor/detail/is_unary.hpp>
#define SPECIAL (whatever) #define IS_SPECIAL BOOST_PP_IS_UNARY
IS_SPECIAL(a) // 0 IS_SPECIAL(b) // 0 IS_SPECIAL(SPECIAL) // 1
It isn't entirely portable to older preprocessors (that's why this code lives in preprocessor/detail) but should work with latest versions of the widely-used compilers.
This also works: #include <boost/preprocessor/facilities/is_empty.hpp> #include <boost/preprocessor/empty.hpp> #define SPECIAL #define IS_SPECIAL(x) BOOST_PP_IS_EMPTY(BOOST_PP_EMPTY() x) Roman Perepelitsa