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 _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost