$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: Tobias Schwinger (tschwinger_at_[hidden])
Date: 2007-06-18 07:51:56
Roman Perepelitsa wrote:
> 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)
> 
Yep, that's even better as it allows x to be anything. Got some idea how 
portable it is?
Regards,
Tobias