You have a lot of macros because Boost switches between the internal functions of the compiler for all the platforms it supports. For example, Visual C ++ defines __is_enum(T) , which returns true if T is enum and false otherwise. MSDN has a list of such built-in functions that Visual C ++ implements to support type properties.
is_enum now part of C ++ 11 and is included in the type_traits header. Looking through the standard library implementation is likely to be easier than the Boost headers.
EDIT:
I found a Boost implementation; it is located in <boost_path>\boost\type_traits\intrinsics.hpp . Find this file for BOOST_IS_ENUM in this file, and you will see the built-in compiler implemented by various compilers. Interestingly, they all implement this particular one as __is_enum(T) .
Praetorian
source share