Boost logo

Boost :

From: Terje Slettebø (tslettebo_at_[hidden])
Date: 2003-01-09 16:00:10


>From: "Paul Mensonides" <pmenso57_at_[hidden]>

> From: "Daniel Frey" <d.frey_at_[hidden]>
>
> > On Thu, 09 Jan 2003 20:18:08 +0100, Derek Ross wrote:
> >
> > > Daniel Frey wrote:
> > >> Uhm... don't know about MPL, but isn't this a good example for
> > >> type_traits? Something like:
> > >>
> > >> template <class T>
> > >> bool SetOption(COptionInfo& o, const char* key, const T& value) {
> > >> BOOST_STATIC_ASSERT( boost::is_same< T, bool >::value ||
> > >> boost::is_same< T, int >::value ||
> > >> boost::is_same< T, double >::value ||
> > >> boost::is_same< T, std::string
>::value );
> > >> ...etc...
> > >
> > > It doesn't compile because the commas in the is_same template confuse
> > > the macro preprocessor.
> > >
> > > The error message is:
> > >
> > > "macro "BOOST_STATIC_ASSERT" passed 5 arguments, but takes just 1"
>
> You can just do this as well:
>
> BOOST_STATIC_ASSERT(
> ( boost::is_same<T, bool>::value ) ||
> ( boost::is_same<T, int>::value ) ||
> ( boost::is_same<T, double>::value ) ||
> ( boost::is_same<T, std::string>::value );
> )
>
> In other words, just parenthesize the expressions.

Or even just the macro parameter:

BOOST_STATIC_ASSERT((\
  boost::is_same<T, bool>::value ||\
  boost::is_same<T, int>::value ||\
  boost::is_same<T, double>::value ||\
  boost::is_same<T, std::string>::value ));

Regards,

Terje


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