Boost logo

Boost :

From: Daniel James (daniel_at_[hidden])
Date: 2004-09-02 06:35:52


Toon Knapen wrote:
> On IBM this results in following error msg:
>
> "pp.cpp", line 14.1: 1540-0063 (S) The text "1" is unexpected.

I think that Paul was after the preprocessed text. But, if that's not
possible, can you try the following?

thanks,

Daniel

#include <boost/preprocessor/detail/split.hpp>
#include <boost/preprocessor/punctuation/comma.hpp>
#include <boost/preprocessor/punctuation/paren.hpp>
#include <boost/preprocessor/tuple/eat.hpp>
#include <boost/static_assert.hpp>

#define IS_NULLARY(x) \
     BOOST_PP_SPLIT(1, IS_NULLARY_C x BOOST_PP_COMMA() 0) \
     /**/
#define IS_NULLARY_C() \
     ~, 1 BOOST_PP_RPAREN() \
     BOOST_PP_TUPLE_EAT(2) BOOST_PP_LPAREN() ~ \
     /**/

BOOST_STATIC_ASSERT(IS_NULLARY(()));
BOOST_STATIC_ASSERT(IS_NULLARY(()abc));
BOOST_STATIC_ASSERT(!IS_NULLARY(+));
BOOST_STATIC_ASSERT(!IS_NULLARY(xyz));

#define IS_UNARY(x) IS_NULLARY(IS_UNARY_C x)
#define IS_UNARY_C(a) ()

BOOST_STATIC_ASSERT(IS_UNARY((a)));
BOOST_STATIC_ASSERT(IS_UNARY((a)abc));
BOOST_STATIC_ASSERT(!IS_UNARY(+));
BOOST_STATIC_ASSERT(!IS_UNARY(xyz));


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk