I went there and indeed it can't get any simpler - at least in
Aleksey is one thread - while he answers that, I'm back to the original question of places in Boost that show effective understandable use of partial template specialization without all these ugly macros-) Its hard to show something like this when I have to drill into all these macros one by one-) Sam Gentile .NET Consultant ManagedCode@nospam.attbi.com http://www.samgentile.com http://radio.weblogs.com/0105852/ -----Original Message----- From: John Maddock [mailto:john_maddock@compuserve.com] Sent: Wednesday, November 13, 2002 7:05 AM To: Boost-Users@yahoogroups.com Subject: Re: [Boost-Users] A strange question-) theory-)
Read the document C:\Boost\boost_1_29_0\libs\type_traits\c++_type_traits.htm and its quite simple:
template <typename T> struct is_void { static const bool value = false; };
template <> struct is_void<void> { static const bool value = true; };
That's exactly what I want to show. So I go to the header files and instead:
//* is a type T void - is_void<T>
BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_void,T,false)
BOOST_TT_AUX_BOOL_TRAIT_SPEC1(is_void,void,true)
Huh? So I look in bool_trait_def.hpp:
#define BOOST_TT_AUX_BOOL_TRAIT_DEF1(trait,T,C) \
template< typename T > struct trait \
: mpl::bool_c< C > \
{ \
BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
BOOST_MPL_AUX_LAMBDA_SUPPORT(1,trait,(T)) \
}; \
Argh! Why is it done like this? This makes it much more complicated and unreadable than it has to be. Why are macros being used everywhere?
A very good question - Aleksey Gurtovoy refactored them like that - Aleksey? John Maddock http://ourworld.compuserve.com/homepages/john_maddock/index.htm Info: http://www.boost.org Wiki: http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl Unsubscribe: mailto:boost-users-unsubscribe@yahoogroups.com Your use of Yahoo! Groups is subject to the Yahoo! http://docs.yahoo.com/info/terms/ Terms of Service. [Non-text portions of this message have been removed]