|
Boost : |
From: Daniel Frey (d.frey_at_[hidden])
Date: 2003-01-09 15:02:23
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"
>
> Thought you might be interested...
Yes, sorry. I haven't tested this stuff, this is why I said "Something
like" ;)
Then how about:
template <class T>
bool SetOption(COptionInfo& o, const char* key, const T& value) {
typedef boost::is_same< T, bool > is_bool_;
typedef boost::is_same< T, int > is_int_;
typedef boost::is_same< T, double > is_double_;
typedef boost::is_same< T, std::string > is_string_;
BOOST_STATIC_ASSERT( is_bool_::value ||
is_int_::value ||
is_double_::value ||
is_string_::value );
...etc...
(That's the "usual" work-around for the comma-in-macro problem :)
Regards, Daniel
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk