...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
An example using the macro metafunctions
BOOST_TTI_HAS_CLASS
BOOST_TTI_HAS_CLASS_GEN
BOOST_TTI_HAS_DATA
BOOST_TTI_HAS_DATA_GEN
BOOST_TTI_HAS_ENUM
BOOST_TTI_HAS_ENUM_GEN
BOOST_TTI_HAS_FUNCTION
BOOST_TTI_HAS_FUNCTION_GEN
BOOST_TTI_HAS_FUNCTION_TEMPLATE
BOOST_TTI_HAS_FUNCTION_TEMPLATE_GEN
BOOST_TTI_HAS_MEMBER_DATA
BOOST_TTI_HAS_MEMBER_DATA_GEN
BOOST_TTI_HAS_MEMBER_FUNCTION
BOOST_TTI_HAS_MEMBER_FUNCTION_GEN
BOOST_TTI_HAS_MEMBER_FUNCTION_TEMPLATE
BOOST_TTI_HAS_MEMBER_FUNCTION_TEMPLATE_GEN
BOOST_TTI_HAS_STATIC_MEMBER_DATA
BOOST_TTI_HAS_STATIC_MEMBER_DATA_GEN
BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION
BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_GEN
BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_TEMPLATE
BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_TEMPLATE_GEN
BOOST_TTI_HAS_TEMPLATE
BOOST_TTI_HAS_TEMPLATE_GEN
BOOST_TTI_HAS_TYPE
BOOST_TTI_HAS_TYPE_GEN
BOOST_TTI_HAS_UNION
BOOST_TTI_HAS_UNION_GEN
boost_tti_marker_type
BOOST_TTI_MEMBER_TYPE
BOOST_TTI_MEMBER_TYPE_GEN
BOOST_TTI_NAMESPACE
BOOST_TTI_TRAIT_HAS_CLASS
BOOST_TTI_TRAIT_HAS_DATA
BOOST_TTI_TRAIT_HAS_ENUM
BOOST_TTI_TRAIT_HAS_FUNCTION
BOOST_TTI_TRAIT_HAS_FUNCTION_TEMPLATE
BOOST_TTI_TRAIT_HAS_MEMBER_DATA
BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION
BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION_TEMPLATE
BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_DATA
BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION
BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION_TEMPLATE
BOOST_TTI_TRAIT_HAS_TEMPLATE
BOOST_TTI_TRAIT_HAS_TYPE
BOOST_TTI_TRAIT_HAS_UNION
BOOST_TTI_TRAIT_MEMBER_TYPE
General Functionality
Header < boost/tti/gen/has_class_gen.hpp >
Header < boost/tti/gen/has_data_gen.hpp >
Header < boost/tti/gen/has_enum_gen.hpp >
Header < boost/tti/gen/has_function_gen.hpp >
Header < boost/tti/gen/has_function_template_gen.hpp >
Header < boost/tti/gen/has_member_data_gen.hpp >
Header < boost/tti/gen/has_member_function_gen.hpp >
Header < boost/tti/gen/has_member_function_template_gen.hpp >
Header < boost/tti/gen/has_static_member_data_gen.hpp >
Header < boost/tti/gen/has_static_member_function_gen.hpp >
Header < boost/tti/gen/has_static_member_function_template_gen.hpp >
Header < boost/tti/gen/has_template_gen.hpp >
Header < boost/tti/gen/has_type_gen.hpp >
Header < boost/tti/gen/has_union_gen.hpp >
Header < boost/tti/gen/member_type_gen.hpp >
Header < boost/tti/gen/namespace_gen.hpp >
Header < boost/tti/has_class.hpp >
Header < boost/tti/has_data.hpp >
Header < boost/tti/has_enum.hpp >
Header < boost/tti/has_function.hpp >
Header < boost/tti/has_function_template.hpp >
Header < boost/tti/has_member_data.hpp >
Header < boost/tti/has_member_function.hpp >
Header < boost/tti/has_member_function_template.hpp >
Header < boost/tti/has_static_member_data.hpp >
Header < boost/tti/has_static_member_function.hpp >
Header < boost/tti/has_static_member_function_template.hpp >
Header < boost/tti/has_template.hpp >
Header < boost/tti/has_type.hpp >
Header < boost/tti/has_union.hpp >
Header < boost/tti/member_type.hpp >
History
Introspecting a specific user-defined type
Introspecting an inner type
Introspecting data
Introspecting function
Introspecting function template
Introspecting function templates technique
Introspecting member data
Introspecting member function
Introspecting member function template
Introspecting static member data
Introspecting static member function
Introspecting static member function template
Macro BOOST_TTI_HAS_CLASS
Macro BOOST_TTI_HAS_CLASS_GEN
Macro BOOST_TTI_HAS_DATA
Macro BOOST_TTI_HAS_DATA_GEN
Macro BOOST_TTI_HAS_ENUM
Macro BOOST_TTI_HAS_ENUM_GEN
Macro BOOST_TTI_HAS_FUNCTION
Macro BOOST_TTI_HAS_FUNCTION_GEN
Macro BOOST_TTI_HAS_FUNCTION_TEMPLATE
Macro BOOST_TTI_HAS_FUNCTION_TEMPLATE_GEN
Macro BOOST_TTI_HAS_MEMBER_DATA
Macro BOOST_TTI_HAS_MEMBER_DATA_GEN
Macro BOOST_TTI_HAS_MEMBER_FUNCTION
Macro BOOST_TTI_HAS_MEMBER_FUNCTION_GEN
Macro BOOST_TTI_HAS_MEMBER_FUNCTION_TEMPLATE
Macro BOOST_TTI_HAS_MEMBER_FUNCTION_TEMPLATE_GEN
Macro BOOST_TTI_HAS_STATIC_MEMBER_DATA
Macro BOOST_TTI_HAS_STATIC_MEMBER_DATA_GEN
Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION
Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_GEN
Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_TEMPLATE
Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_TEMPLATE_GEN
Macro BOOST_TTI_HAS_TEMPLATE
Macro BOOST_TTI_HAS_TEMPLATE_GEN
Macro BOOST_TTI_HAS_TYPE
Macro BOOST_TTI_HAS_TYPE_GEN
Macro BOOST_TTI_HAS_UNION
Macro BOOST_TTI_HAS_UNION_GEN
Macro BOOST_TTI_MEMBER_TYPE
Macro BOOST_TTI_MEMBER_TYPE_GEN
Macro BOOST_TTI_NAMESPACE
Macro BOOST_TTI_TRAIT_HAS_CLASS
Macro BOOST_TTI_TRAIT_HAS_DATA
Macro BOOST_TTI_TRAIT_HAS_ENUM
Macro BOOST_TTI_TRAIT_HAS_FUNCTION
Macro BOOST_TTI_TRAIT_HAS_FUNCTION_TEMPLATE
Macro BOOST_TTI_TRAIT_HAS_MEMBER_DATA
Macro BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION
Macro BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION_TEMPLATE
Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_DATA
Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION
Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION_TEMPLATE
Macro BOOST_TTI_TRAIT_HAS_TEMPLATE
Macro BOOST_TTI_TRAIT_HAS_TYPE
Macro BOOST_TTI_TRAIT_HAS_UNION
Macro BOOST_TTI_TRAIT_MEMBER_TYPE
Macro metafunction name generation considerations
Nested Types
Nested Types and Function Signatures
Struct template valid_member_metafunction
Struct template valid_member_type
trait
TTI Macro Metafunctions
TTI Nested Type Macro Metafunction
TTI Nested Type Macro Metafunction Existence
TTI Specific Inner Types
type
Using the BOOST_TTI_HAS_TEMPLATE macro
Using the has_template_(xxx) metafunction
valid_member_metafunction
valid_member_type