Boost logo

Boost Users :

From: John Maddock (john_maddock_at_[hidden])
Date: 2002-11-13 07:04:46


> I went there and indeed it can't get any simpler - at least in 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


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net