
-----Original Message----- From: boost-bounces@lists.boost.org [mailto:boost-bounces@lists.boost.org] On Behalf Of Paul Mensonides
Any suggestions? Here is the code:
Are you trying to detect 'unsigned char' specifically, or are you ultimately trying to compare strings of identifiers (keywords are identifiers here)?
Here's a more robust implementation of the former: #include <boost/preprocessor/cat.hpp> #include <boost/preprocessor/control/iif.hpp> #include <boost/preprocessor/detail/is_nullary.hpp> #include <boost/preprocessor/facilities/empty.hpp> #include <boost/preprocessor/facilities/expand.hpp> #include <boost/preprocessor/tuple/eat.hpp> #define IS_UNSIGNED_CHAR(x) \ BOOST_PP_IIF( \ BOOST_PP_IS_NULLARY( \ BOOST_PP_CAT(UNSIGNED_, x) \ ), \ BOOST_PP_IIF( \ BOOST_PP_IS_NULLARY( \ BOOST_PP_EXPAND(BOOST_PP_EMPTY BOOST_PP_CAT(UNSIGNED_, x))() \ ), \ 0 BOOST_PP_TUPLE_EAT(1), IS_UNSIGNED_CHAR_II \ ), \ 0 BOOST_PP_TUPLE_EAT(1) \ )(BOOST_PP_EMPTY BOOST_PP_CAT(UNSIGNED_, x)) \ /**/ #define IS_UNSIGNED_CHAR_II(x) \ BOOST_PP_IIF( \ BOOST_PP_IS_NULLARY( \ BOOST_PP_CAT(CHAR_, x) \ ), \ BOOST_PP_IS_NULLARY, 0 BOOST_PP_TUPLE_EAT(1) \ )(BOOST_PP_EXPAND(BOOST_PP_EMPTY BOOST_PP_CAT(CHAR_, x))()) \ /**/ #define UNSIGNED_unsigned () #define CHAR_char () Regards, Paul Mensonides