Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r74116 - in trunk: boost/tti boost/tti/gen boost/tti/mf libs/tti/doc libs/tti/doc/html libs/tti/doc/html/boost/tti libs/tti/doc/html/index libs/tti/doc/html/the_type_traits_introspection_library
From: eldiener_at_[hidden]
Date: 2011-08-28 21:18:46


Author: eldiener
Date: 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
New Revision: 74116
URL: http://svn.boost.org/trac/boost/changeset/74116

Log:
Better documentation and organization.
Text files modified:
   trunk/boost/tti/gen/has_member_data_gen.hpp | 1
   trunk/boost/tti/gen/has_member_function_gen.hpp | 1
   trunk/boost/tti/gen/has_member_function_with_sig_gen.hpp | 1
   trunk/boost/tti/gen/has_static_member_data_gen.hpp | 1
   trunk/boost/tti/gen/has_static_member_function_gen.hpp | 1
   trunk/boost/tti/gen/has_static_member_function_with_sig_gen.hpp | 1
   trunk/boost/tti/gen/has_template_check_params_gen.hpp | 1
   trunk/boost/tti/gen/has_template_gen.hpp | 1
   trunk/boost/tti/gen/has_type_gen.hpp | 1
   trunk/boost/tti/gen/member_type_gen.hpp | 1
   trunk/boost/tti/gen/vm_has_template_check_params_gen.hpp | 1
   trunk/boost/tti/has_member_data.hpp | 41 +++-
   trunk/boost/tti/has_member_function.hpp | 29 +++
   trunk/boost/tti/has_member_function_with_sig.hpp | 24 ++
   trunk/boost/tti/has_static_member_data.hpp | 14 +
   trunk/boost/tti/has_static_member_function.hpp | 29 +++
   trunk/boost/tti/has_static_member_function_with_sig.hpp | 28 ++
   trunk/boost/tti/has_template.hpp | 18 ++
   trunk/boost/tti/has_template_check_params.hpp | 22 ++
   trunk/boost/tti/has_type.hpp | 29 ++
   trunk/boost/tti/member_type.hpp | 76 ++++++++-
   trunk/boost/tti/mf/mf_has_member_data.hpp | 18 +
   trunk/boost/tti/mf/mf_has_member_function.hpp | 17 +
   trunk/boost/tti/mf/mf_has_static_member_data.hpp | 22 +
   trunk/boost/tti/mf/mf_has_static_member_function.hpp | 20 ++
   trunk/boost/tti/mf/mf_has_template.hpp | 11 +
   trunk/boost/tti/mf/mf_has_template_check_params.hpp | 14 +
   trunk/boost/tti/mf/mf_has_type.hpp | 16 +
   trunk/boost/tti/mf/mf_member_type.hpp | 54 ++----
   trunk/boost/tti/tti.hpp | 8 +
   trunk/boost/tti/vm_has_template_check_params.hpp | 22 ++
   trunk/libs/tti/doc/html/BOOST_TTI_HAS_MEMBER_DATA.html | 9
   trunk/libs/tti/doc/html/BOOST_TTI_HAS_MEMBER_DATA_GEN.html | 2
   trunk/libs/tti/doc/html/BOOST_TTI_HAS_MEMBER_FUNCTION.html | 7
   trunk/libs/tti/doc/html/BOOST_TTI_HAS_MEMBER_FUNCTION_GEN.html | 2
   trunk/libs/tti/doc/html/BOOST_TTI_HAS_STATIC_MEMBER_DATA.html | 7
   trunk/libs/tti/doc/html/BOOST_TTI_HAS_STATIC_MEMBER_DATA_GEN.html | 2
   trunk/libs/tti/doc/html/BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION.html | 7
   trunk/libs/tti/doc/html/BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_GEN.html | 2
   trunk/libs/tti/doc/html/BOOST_TTI_HAS_TEMPLATE.html | 5
   trunk/libs/tti/doc/html/BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS.html | 7
   trunk/libs/tti/doc/html/BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS_GEN.html | 2
   trunk/libs/tti/doc/html/BOOST_TTI_HAS_TEMPLATE_GEN.html | 2
   trunk/libs/tti/doc/html/BOOST_TTI_HAS_TYPE.html | 7
   trunk/libs/tti/doc/html/BOOST_TTI_HAS_TYPE_GEN.html | 2
   trunk/libs/tti/doc/html/BOOST_TTI_MEMBER_TYPE.html | 9
   trunk/libs/tti/doc/html/BOOST_TTI_MEMBER_TYPE_GEN.html | 2
   trunk/libs/tti/doc/html/BOOST_TTI_NAMESPACE.html | 2
   trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_MEMBER_DATA.html | 12
   trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION.html | 7
   trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_DATA.html | 6
   trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION.html | 8
   trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_TEMPLATE.html | 5
   trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS.html | 7
   trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_TYPE.html | 9
   trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_MEMBER_TYPE.html | 21 +-
   trunk/libs/tti/doc/html/BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS.html | 7
   trunk/libs/tti/doc/html/BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS_GEN.html | 2
   trunk/libs/tti/doc/html/BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS.html | 7
   trunk/libs/tti/doc/html/boost/tti/mf_has_member_data.html | 11
   trunk/libs/tti/doc/html/boost/tti/mf_has_member_function.html | 11
   trunk/libs/tti/doc/html/boost/tti/mf_has_static_member_data.html | 13
   trunk/libs/tti/doc/html/boost/tti/mf_has_template.html | 8
   trunk/libs/tti/doc/html/boost/tti/mf_has_type.html | 9
   trunk/libs/tti/doc/html/boost/tti/mf_member_type.html | 11
   trunk/libs/tti/doc/html/boost/tti/mf_valid_member_type.html | 15 +
   trunk/libs/tti/doc/html/boost/tti/valid_member_type.html | 19 +-
   trunk/libs/tti/doc/html/index.html | 2
   trunk/libs/tti/doc/html/index/s16.html | 313 +++++++++++++++++++++++++++++++++++----
   trunk/libs/tti/doc/html/standalone_HTML.manifest | 6
   trunk/libs/tti/doc/html/the_type_traits_introspection_library/tti_functionality.html | 21 +-
   trunk/libs/tti/doc/html/the_type_traits_introspection_library/tti_metafunctions.html | 4
   trunk/libs/tti/doc/html/the_type_traits_introspection_library/tti_nested_type.html | 20 +-
   trunk/libs/tti/doc/tti_functionality.qbk | 8
   trunk/libs/tti/doc/tti_nested_type.qbk | 8
   75 files changed, 846 insertions(+), 323 deletions(-)

Modified: trunk/boost/tti/gen/has_member_data_gen.hpp
==============================================================================
--- trunk/boost/tti/gen/has_member_data_gen.hpp (original)
+++ trunk/boost/tti/gen/has_member_data_gen.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -8,7 +8,6 @@
 #define TTI_MEMBER_DATA_GEN_HPP
 
 #include <boost/preprocessor/cat.hpp>
-#include <boost/tti/gen/namespace_gen.hpp>
 
 /*
 

Modified: trunk/boost/tti/gen/has_member_function_gen.hpp
==============================================================================
--- trunk/boost/tti/gen/has_member_function_gen.hpp (original)
+++ trunk/boost/tti/gen/has_member_function_gen.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -8,7 +8,6 @@
 #define TTI_MEMBER_FUNCTION_GEN_HPP
 
 #include <boost/preprocessor/cat.hpp>
-#include <boost/tti/gen/namespace_gen.hpp>
 
 /*
 

Modified: trunk/boost/tti/gen/has_member_function_with_sig_gen.hpp
==============================================================================
--- trunk/boost/tti/gen/has_member_function_with_sig_gen.hpp (original)
+++ trunk/boost/tti/gen/has_member_function_with_sig_gen.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -8,7 +8,6 @@
 #define TTI_COMP_MEM_FUN_GEN_HPP
 
 #include <boost/preprocessor/cat.hpp>
-#include <boost/tti/gen/namespace_gen.hpp>
 
 /*
 

Modified: trunk/boost/tti/gen/has_static_member_data_gen.hpp
==============================================================================
--- trunk/boost/tti/gen/has_static_member_data_gen.hpp (original)
+++ trunk/boost/tti/gen/has_static_member_data_gen.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -8,7 +8,6 @@
 #define TTI_STATIC_MEMBER_DATA_GEN_HPP
 
 #include <boost/preprocessor/cat.hpp>
-#include <boost/tti/gen/namespace_gen.hpp>
 
 /*
 

Modified: trunk/boost/tti/gen/has_static_member_function_gen.hpp
==============================================================================
--- trunk/boost/tti/gen/has_static_member_function_gen.hpp (original)
+++ trunk/boost/tti/gen/has_static_member_function_gen.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -8,7 +8,6 @@
 #define TTI_STATIC_MEMBER_FUNCTION_GEN_HPP
 
 #include <boost/preprocessor/cat.hpp>
-#include <boost/tti/gen/namespace_gen.hpp>
 
 /*
 

Modified: trunk/boost/tti/gen/has_static_member_function_with_sig_gen.hpp
==============================================================================
--- trunk/boost/tti/gen/has_static_member_function_with_sig_gen.hpp (original)
+++ trunk/boost/tti/gen/has_static_member_function_with_sig_gen.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -8,7 +8,6 @@
 #define TTI_COMP_STATIC_MEM_FUN_GEN_HPP
 
 #include <boost/preprocessor/cat.hpp>
-#include <boost/tti/gen/namespace_gen.hpp>
 
 /*
 

Modified: trunk/boost/tti/gen/has_template_check_params_gen.hpp
==============================================================================
--- trunk/boost/tti/gen/has_template_check_params_gen.hpp (original)
+++ trunk/boost/tti/gen/has_template_check_params_gen.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -8,7 +8,6 @@
 #define TTI_TEMPLATE_PARAMS_GEN_HPP
 
 #include <boost/preprocessor/cat.hpp>
-#include <boost/tti/gen/namespace_gen.hpp>
 
 /*
 

Modified: trunk/boost/tti/gen/has_template_gen.hpp
==============================================================================
--- trunk/boost/tti/gen/has_template_gen.hpp (original)
+++ trunk/boost/tti/gen/has_template_gen.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -8,7 +8,6 @@
 #define TTI_TEMPLATE_GEN_HPP
 
 #include <boost/preprocessor/cat.hpp>
-#include <boost/tti/gen/namespace_gen.hpp>
 
 /*
 

Modified: trunk/boost/tti/gen/has_type_gen.hpp
==============================================================================
--- trunk/boost/tti/gen/has_type_gen.hpp (original)
+++ trunk/boost/tti/gen/has_type_gen.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -8,7 +8,6 @@
 #define TTI_TYPE_GEN_HPP
 
 #include <boost/preprocessor/cat.hpp>
-#include <boost/tti/gen/namespace_gen.hpp>
 
 /*
 

Modified: trunk/boost/tti/gen/member_type_gen.hpp
==============================================================================
--- trunk/boost/tti/gen/member_type_gen.hpp (original)
+++ trunk/boost/tti/gen/member_type_gen.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -8,7 +8,6 @@
 #define TTI_MEMBER_TYPE_GEN_HPP
 
 #include <boost/preprocessor/cat.hpp>
-#include <boost/tti/gen/namespace_gen.hpp>
 
 /*
 

Modified: trunk/boost/tti/gen/vm_has_template_check_params_gen.hpp
==============================================================================
--- trunk/boost/tti/gen/vm_has_template_check_params_gen.hpp (original)
+++ trunk/boost/tti/gen/vm_has_template_check_params_gen.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -12,7 +12,6 @@
 #if BOOST_PP_VARIADICS
 
 #include <boost/preprocessor/cat.hpp>
-#include <boost/tti/gen/namespace_gen.hpp>
 
 /*
 

Modified: trunk/boost/tti/has_member_data.hpp
==============================================================================
--- trunk/boost/tti/has_member_data.hpp (original)
+++ trunk/boost/tti/has_member_data.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -11,6 +11,7 @@
 #include <boost/preprocessor/cat.hpp>
 #include <boost/type_traits/remove_const.hpp>
 #include <boost/tti/gen/has_member_data_gen.hpp>
+#include <boost/tti/gen/namespace_gen.hpp>
 #include <boost/tti/detail/dmem_data.hpp>
 
 /*
@@ -27,25 +28,32 @@
 
     trait = the name of the metafunction within the tti namespace.
     
- name = the name of the inner member.
+ name = the name of the inner member to introspect.
 
- returns = a metafunction called "boost::tti::trait" where 'trait' is the macro parameter.<br />
+ generates a metafunction called "trait" where 'trait' is the macro parameter.
     
+ template<class TTI_T,class TTI_Type>
+ struct trait
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
               The metafunction types and return:
     
- TTI_T = the enclosing type in which to look for our 'name'.
+ TTI_T = the enclosing type in which to look for our 'name'.
                 
- TTI_R = the type of the member data.
+ TTI_Type = the type of the member data.
                 
- returns = 'value' is true if the 'name' exists, with the appropriate type,
- otherwise 'value' is false.
+ returns = 'value' is true if the 'name' exists, with the TTI_Type data type,
+ within the enclosing TTI_T type, otherwise 'value' is false.
                           
 */
 #define BOOST_TTI_TRAIT_HAS_MEMBER_DATA(trait,name) \
   TTI_DETAIL_TRAIT_HAS_MEMBER_DATA(trait,name) \
- template<class TTI_T,class TTI_R> \
+ template<class TTI_T,class TTI_Type> \
   struct trait : \
- BOOST_PP_CAT(trait,_detail)<typename BOOST_TTI_NAMESPACE::detail::ptmd<TTI_T,TTI_R>::type,typename boost::remove_const<TTI_T>::type> \
+ BOOST_PP_CAT(trait,_detail)<typename BOOST_TTI_NAMESPACE::detail::ptmd<TTI_T,TTI_Type>::type,typename boost::remove_const<TTI_T>::type> \
     { \
     }; \
 /**/
@@ -55,16 +63,23 @@
 
     name = the name of the inner member.
 
- returns = a metafunction called "boost::tti::has_member_data_name" where 'name' is the macro parameter.
+ generates a metafunction called "has_member_data_name" where 'name' is the macro parameter.
     
+ template<class TTI_T,class TTI_Type>
+ struct has_member_data_name
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
               The metafunction types and return:
     
- TTI_T = the enclosing type in which to look for our 'name'.
+ TTI_T = the enclosing type in which to look for our 'name'.
                 
- TTI_R = the type of the member data.
+ TTI_Type = the type of the member data.
                 
- returns = 'value' is true if the 'name' exists, with the appropriate type,
- otherwise 'value' is false.
+ returns = 'value' is true if the 'name' exists, with the TTI_Type data type,
+ within the enclosing TTI_T type, otherwise 'value' is false.
                           
 */
 #define BOOST_TTI_HAS_MEMBER_DATA(name) \

Modified: trunk/boost/tti/has_member_function.hpp
==============================================================================
--- trunk/boost/tti/has_member_function.hpp (original)
+++ trunk/boost/tti/has_member_function.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -13,6 +13,7 @@
 #include <boost/preprocessor/cat.hpp>
 #include <boost/type_traits/remove_const.hpp>
 #include <boost/tti/gen/has_member_function_gen.hpp>
+#include <boost/tti/gen/namespace_gen.hpp>
 #include <boost/tti/detail/dmem_fun.hpp>
 
 /*
@@ -31,8 +32,15 @@
     
     name = the name of the inner member.
 
- returns = a metafunction called "boost::tti::trait" where 'trait' is the macro parameter.<br />
+ generates a metafunction called "trait" where 'trait' is the macro parameter.<br />
     
+ template<class TTI_T,class TTI_R,class TTI_FS,class TTI_TAG>
+ struct trait
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
               The metafunction types and return:
     
                 TTI_T = the enclosing type in which to look for our 'name'.
@@ -43,7 +51,10 @@
                 
                 TTI_TAG = an optional parameter which is a boost::function_types tag to apply to the member function.
                 
- returns = 'value' is true if the 'name' exists, with the appropriate type,
+ returns = 'value' is true if the 'name' exists,
+ with the appropriate member function type,
+ as defined by TTI_R, TTI_FS, and TTI_TAG,
+ within the enclosing TTI_T type,
                           otherwise 'value' is false.
                           
 */
@@ -61,8 +72,15 @@
 
     name = the name of the inner member.
 
- returns = a metafunction called "boost::tti::has_member_function_name" where 'name' is the macro parameter.
+ generates a metafunction called "has_member_function_name" where 'name' is the macro parameter.
     
+ template<class TTI_T,class TTI_R,class TTI_FS,class TTI_TAG>
+ struct has_member_function_name
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
               The metafunction types and return:
     
                 TTI_T = the enclosing type in which to look for our 'name'.
@@ -73,7 +91,10 @@
                 
                 TTI_TAG = an optional parameter which is a boost::function_types tag to apply to the member function.
                 
- returns = 'value' is true if the 'name' exists, with the appropriate type,
+ returns = 'value' is true if the 'name' exists,
+ with the appropriate member function type,
+ as defined by TTI_R, TTI_FS, and TTI_TAG,
+ within the enclosing TTI_T type,
                           otherwise 'value' is false.
                           
 */

Modified: trunk/boost/tti/has_member_function_with_sig.hpp
==============================================================================
--- trunk/boost/tti/has_member_function_with_sig.hpp (original)
+++ trunk/boost/tti/has_member_function_with_sig.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -30,15 +30,23 @@
     
     name = the name of the inner member.
 
- returns = a metafunction called "boost::tti::trait" where 'trait' is the macro parameter.<br />
+ generates a metafunction called "trait" where 'trait' is the macro parameter.
     
+ template<class TTI_T>
+ struct trait
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
               The metafunction types and return:
     
                 TTI_T = the member function type,
                         in the form of a member function pointer - 'return_type (Class::*)(parameter_types...)',
                         in which to look for our 'name'.
                     
- returns = 'value' is true if the 'name' exists, with the appropriate type,
+ returns = 'value' is true if the 'name' exists,
+ with the appropriate member function type as defined by TTI_T,
                           otherwise 'value' is false.
                           
 */
@@ -56,15 +64,23 @@
 
     name = the name of the inner member.
 
- returns = a metafunction called "boost::tti::has_comp_member_function_name" where 'name' is the macro parameter.
+ generates a metafunction called "has_member_function_with_sig_name" where 'name' is the macro parameter.
     
+ template<class TTI_T>
+ struct has_member_function_with_sig_name
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
               The metafunction types and return:
     
                 TTI_T = the member function type,
                         in the form of a member function pointer - 'return_type (Class::*)(parameter_types...)',
                         in which to look for our 'name'.
                     
- returns = 'value' is true if the 'name' exists, with the appropriate type,
+ returns = 'value' is true if the 'name' exists,
+ with the appropriate member function type as defined by TTI_T,
                           otherwise 'value' is false.
                           
 */

Modified: trunk/boost/tti/has_static_member_data.hpp
==============================================================================
--- trunk/boost/tti/has_static_member_data.hpp (original)
+++ trunk/boost/tti/has_static_member_data.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -28,7 +28,7 @@
     
     name = the name of the inner member.
 
- returns = a metafunction called "boost::tti::trait" where 'trait' is the macro parameter.
+ generates a metafunction called "trait" where 'trait' is the macro parameter.
     
               The metafunction types and return:
     
@@ -38,8 +38,9 @@
                            in the form of a data type,
                            in which to look for our 'name'.
                        
- returns = 'value' is true if the 'name' exists within the enclosing type,
- with the appropriate type,
+ returns = 'value' is true if the 'name' exists,
+ with the TTI_Type type,
+ within the enclosing TTI_T type,
                           otherwise 'value' is false.
                           
 */
@@ -57,7 +58,7 @@
 
     name = the name of the inner member.
 
- returns = a metafunction called "boost::tti::has_static_member_name" where 'name' is the macro parameter.<br />
+ generates a metafunction called "has_static_member_name" where 'name' is the macro parameter.
     
               The metafunction types and return:
     
@@ -67,8 +68,9 @@
                            in the form of a data type,
                            in which to look for our 'name'.
                        
- returns = 'value' is true if the 'name' exists within the enclosing type,
- with the appropriate type,
+ returns = 'value' is true if the 'name' exists,
+ with the appropriate TTI_Type type,
+ within the enclosing TTI_T type,
                           otherwise 'value' is false.
                           
 */

Modified: trunk/boost/tti/has_static_member_function.hpp
==============================================================================
--- trunk/boost/tti/has_static_member_function.hpp (original)
+++ trunk/boost/tti/has_static_member_function.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -12,6 +12,7 @@
 #include <boost/mpl/vector.hpp>
 #include <boost/preprocessor/cat.hpp>
 #include <boost/tti/gen/has_static_member_function_gen.hpp>
+#include <boost/tti/gen/namespace_gen.hpp>
 #include <boost/tti/detail/dstatic_mem_fun.hpp>
 #include <boost/tti/detail/dtfunction.hpp>
 
@@ -31,8 +32,15 @@
     
     name = the name of the inner member.
 
- returns = a metafunction called "boost::tti::trait" where 'trait' is the macro parameter.<br />
+ generates a metafunction called "trait" where 'trait' is the macro parameter.
     
+ template<class TTI_T,class TTI_R,class TTI_FS,class TTI_TAG>
+ struct trait
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
               The metafunction types and return:
     
                 TTI_T = the enclosing type in which to look for our 'name'.
@@ -43,7 +51,10 @@
                 
                 TTI_TAG = an optional parameter which is a boost::function_types tag to apply to the static member function.
                 
- returns = 'value' is true if the 'name' exists, with the appropriate type,
+ returns = 'value' is true if the 'name' exists,
+ with the appropriate static member function type,
+ as defined by TTI_R, TTI_FS, and TTI_TAG,
+ within the enclosing TTI_T type,
                           otherwise 'value' is false.
                           
 */
@@ -61,8 +72,15 @@
 
     name = the name of the inner member.
 
- returns = a metafunction called "boost::tti::has_static_member_function_name" where 'name' is the macro parameter.
+ generates a metafunction called "has_static_member_function_name" where 'name' is the macro parameter.
     
+ template<class TTI_T,class TTI_R,class TTI_FS,class TTI_TAG>
+ struct trait
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
               The metafunction types and return:
     
                 TTI_T = the enclosing type in which to look for our 'name'.
@@ -73,7 +91,10 @@
                 
                 TTI_TAG = an optional parameter which is a boost::function_types tag to apply to the static member function.
                 
- returns = 'value' is true if the 'name' exists, with the appropriate type,
+ returns = 'value' is true if the 'name' exists,
+ with the appropriate static member function type,
+ as defined by TTI_R, TTI_FS, and TTI_TAG,
+ within the enclosing TTI_T type,
                           otherwise 'value' is false.
                           
 */

Modified: trunk/boost/tti/has_static_member_function_with_sig.hpp
==============================================================================
--- trunk/boost/tti/has_static_member_function_with_sig.hpp (original)
+++ trunk/boost/tti/has_static_member_function_with_sig.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -30,8 +30,15 @@
     
     name = the name of the inner member.
 
- returns = a metafunction called "boost::tti::trait" where 'trait' is the macro parameter.
+ generates a metafunction called "trait" where 'trait' is the macro parameter.
     
+ template<class TTI_T,class TTI_Type>
+ struct trait
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
               The metafunction types and return:
     
                 TTI_T = the enclosing type.
@@ -40,8 +47,9 @@
                            in the form of a composite function type - 'return_type (parameter_types...)',
                            in which to look for our 'name'.
                        
- returns = 'value' is true if the 'name' exists within the enclosing type,
- with the appropriate type,
+ returns = 'value' is true if the 'name' exists
+ with the TTI_Type static member function type,
+ within the enclosing TTI_T type,
                           otherwise 'value' is false.
                           
 */
@@ -59,8 +67,15 @@
 
     name = the name of the inner member.
 
- returns = a metafunction called "boost::tti::has_comp_static_member_function_name" where 'name' is the macro parameter.<br />
+ generates a metafunction called "has_static_member_function_with_sig_name" where 'name' is the macro parameter.
     
+ template<class TTI_T,class TTI_Type>
+ struct has_static_member_function_with_sig_name
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
               The metafunction types and return:
     
                 TTI_T = the enclosing type.
@@ -69,8 +84,9 @@
                            in the form of a composite function type - 'return_type (parameter_types...)',
                            in which to look for our 'name'.
                        
- returns = 'value' is true if the 'name' exists within the enclosing type,
- with the appropriate type,
+ returns = 'value' is true if the 'name' exists
+ with the TTI_Type static member function type,
+ within the enclosing TTI_T type,
                           otherwise 'value' is false.
                           
 */

Modified: trunk/boost/tti/has_template.hpp
==============================================================================
--- trunk/boost/tti/has_template.hpp (original)
+++ trunk/boost/tti/has_template.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -28,8 +28,15 @@
     
     name = the name of the inner template.
 
- returns = a metafunction called "boost::tti::trait" where 'trait' is the macro parameter.
+ generates a metafunction called "trait" where 'trait' is the macro parameter.
     
+ template<class TTI_T>
+ struct trait
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
               The metafunction types and return:
     
                 TTI_T = the enclosing type in which to look for our 'name'.
@@ -54,8 +61,15 @@
 
     name = the name of the inner template.
 
- returns = a metafunction called "boost::tti::has_template_name" where 'name' is the macro parameter.
+ generates a metafunction called "has_template_name" where 'name' is the macro parameter.
     
+ template<class TTI_T>
+ struct has_template_name
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
               The metafunction types and return:
     
                 TTI_T = the enclosing type in which to look for our 'name'.

Modified: trunk/boost/tti/has_template_check_params.hpp
==============================================================================
--- trunk/boost/tti/has_template_check_params.hpp (original)
+++ trunk/boost/tti/has_template_check_params.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -32,14 +32,21 @@
             Each part of the template parameters separated by a comma ( , )
             is put in a separate sequence element.
 
- returns = a metafunction called "boost::tti::trait" where 'trait' is the macro parameter.
+ generates a metafunction called "trait" where 'trait' is the macro parameter.
     
+ template<class TTI_T>
+ struct trait
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
               The metafunction types and return:
     
                 TTI_T = the enclosing type in which to look for our 'name'.
                 
                 returns = 'value' is true if the 'name' class template with the signature
- as defined by the 'tpSeq' exists within the enclosing type,
+ as defined by the 'tpSeq' exists within the enclosing TTI_T type,
                           otherwise 'value' is false.
     
 */
@@ -61,14 +68,21 @@
             Each part of the template parameters separated by a comma ( , )
             is put in a separate sequence element.
 
- returns = a metafunction called "boost::tti::has_template_check_params_name" where 'name' is the macro parameter.
+ generates a metafunction called "has_template_check_params_name" where 'name' is the macro parameter.
     
+ template<class TTI_T>
+ struct has_template_check_params_name
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
               The metafunction types and return:
     
                 TTI_T = the enclosing type in which to look for our 'name'.
                 
                 returns = 'value' is true if the 'name' class template with the signature
- as defined by the 'tpSeq' exists within the enclosing type,
+ as defined by the 'tpSeq' exists within the enclosing TTI_T type,
                           otherwise 'value' is false.
     
 */

Modified: trunk/boost/tti/has_type.hpp
==============================================================================
--- trunk/boost/tti/has_type.hpp (original)
+++ trunk/boost/tti/has_type.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -10,6 +10,7 @@
 #include <boost/config.hpp>
 #include <boost/preprocessor/cat.hpp>
 #include <boost/tti/gen/has_type_gen.hpp>
+#include <boost/tti/gen/namespace_gen.hpp>
 #include <boost/tti/detail/dtype.hpp>
 #include <boost/tti/detail/dnotype.hpp>
 
@@ -22,23 +23,30 @@
 /** \file
 */
 
-/// Expands to a metafunction which tests whether an inner type with a particular name exists and optionally is a particular type.
+/// Expands to a metafunction which tests whether an inner type with a particular name exists and optionally is the same as a particular type.
 /**
 
     trait = the name of the metafunction within the tti namespace.
     
     name = the name of the inner type.
 
- returns = a metafunction called "boost::tti::trait" where 'trait' is the macro parameter.
+ generates a metafunction called "trait" where 'trait' is the macro parameter.
     
+ template<class TTI_T,class TTI_U>
+ struct trait
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
               The metafunction types and return:
     
                 TTI_T = the enclosing type in which to look for our 'name'.
                 
                 TTI_U = the type of the inner type named 'name' as an optional parameter.
                 
- returns = 'value' is true if the 'name' type exists within the enclosing type
- and, if type U is specified, the 'name' type is the same as the type U,
+ returns = 'value' is true if the 'name' type exists within the enclosing type TTI_T
+ and, if type TTI_U is specified, the 'name' type is the same as the type TTI_U,
                           otherwise 'value' is false.
     
 */
@@ -61,16 +69,23 @@
 
     name = the name of the inner type.
 
- returns = a metafunction called "boost::tti::has_type_name" where 'name' is the macro parameter.
+ generates a metafunction called "has_type_name" where 'name' is the macro parameter.
     
+ template<class TTI_T,class TTI_U>
+ struct has_type_name
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
               The metafunction types and return:
     
                 TTI_T = the enclosing type in which to look for our 'name'.
                 
                 TTI_U = the type of the inner type named 'name' as an optional parameter.
                 
- returns = 'value' is true if the 'name' type exists within the enclosing type
- and, if type U is specified, the 'name' type is the same as the type U,
+ returns = 'value' is true if the 'name' type exists within the enclosing type TTI_T
+ and, if type TTI_U is specified, the 'name' type is the same as the type TTI_U,
                           otherwise 'value' is false.
     
 */

Modified: trunk/boost/tti/member_type.hpp
==============================================================================
--- trunk/boost/tti/member_type.hpp (original)
+++ trunk/boost/tti/member_type.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -10,8 +10,11 @@
 #include <boost/config.hpp>
 #include <boost/mpl/eval_if.hpp>
 #include <boost/mpl/identity.hpp>
+#include <boost/mpl/not.hpp>
+#include <boost/type_traits/is_same.hpp>
 #include <boost/preprocessor/cat.hpp>
 #include <boost/tti/gen/member_type_gen.hpp>
+#include <boost/tti/gen/namespace_gen.hpp>
 #include <boost/tti/detail/dmem_type.hpp>
 #include <boost/tti/detail/dnotype.hpp>
 
@@ -24,26 +27,32 @@
 /** \file
 */
 
-/// Expands to a metafunction whose typedef 'type' is either the named type or an unspecified type.
+/// Expands to a metafunction whose typedef 'type' is either the named type or an unspecified marker type.
 /**
 
     trait = the name of the metafunction within the tti namespace.
     
     name = the name of the inner type.
 
- returns = a metafunction called "boost::tti::trait" where 'trait' is the macro parameter.
+ generates a metafunction called "trait" where 'trait' is the macro parameter.
     
+ template<class TTI_T>
+ struct trait
+ {
+ typedef unspecified type;
+ };
+
               The metafunction types and return:
               
- TTI_T = the enclosing type.<br />
+ TTI_T = the enclosing type.
                 
                 returns = 'type' is the inner type of 'name' if the inner type exists
- within the enclosing type, else 'type' is an unspecified type.<br />
+ within the enclosing type, else 'type' is an unspecified marker type.
                           
     The purpose of this macro is to encapsulate the 'name' type as the typedef 'type'
     of a metafunction, but only if it exists within the enclosing type. This allows for
- a lazy evaluation of inner type existence which can be used by other metafunctions
- in this library.
+ an evaluation of inner type existence, without generating a compiler error,
+ which can be used by other metafunctions in this library.
     
 */
 #define BOOST_TTI_TRAIT_MEMBER_TYPE(trait,name) \
@@ -66,19 +75,25 @@
 
     name = the name of the inner type.
 
- returns = a metafunction called "boost::tti::member_type_name" where 'name' is the macro parameter.
+ generates a metafunction called "member_type_name" where 'name' is the macro parameter.
     
+ template<class TTI_T>
+ struct member_type_name
+ {
+ typedef unspecified type;
+ };
+
               The metafunction types and return:
               
                 TTI_T = the enclosing type.
                 
                 returns = 'type' is the inner type of 'name' if the inner type exists
- within the enclosing type, else 'type' is an unspecified type.
+ within the enclosing type, else 'type' is an unspecified marker type.
                           
     The purpose of this macro is to encapsulate the 'name' type as the typedef 'type'
     of a metafunction, but only if it exists within the enclosing type. This allows for
- a lazy evaluation of inner type existence which can be used by other metafunctions
- in this library.
+ an evaluation of inner type existence, without genrating a compiler error,
+ which can be used by other metafunctions in this library.
     
 */
 #define BOOST_TTI_MEMBER_TYPE(name) \
@@ -89,4 +104,45 @@
   ) \
 /**/
   
+namespace boost
+ {
+ namespace tti
+ {
+
+ /// A metafunction which checks whether the member 'type' returned from invoking the macro metafunction generated by BOOST_TTI_MEMBER_TYPE ( BOOST_TTI_TRAIT_MEMBER_TYPE ) is a valid type.
+ /**
+
+ template<class TTI_T>
+ struct valid_member_type
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
+ The metafunction types and return:
+
+ TTI_T = returned inner 'type' from invoking the macro metafunction generated by BOOST_TTI_MEMBER_TYPE ( BOOST_TTI_TRAIT_MEMBER_TYPE ).
+
+ returns = 'value' is true if the type is valid, otherwise 'value' is false.
+
+ */
+ template
+ <
+ class TTI_T
+ >
+ struct valid_member_type :
+ boost::mpl::not_
+ <
+ boost::is_same
+ <
+ TTI_T,
+ BOOST_TTI_NAMESPACE::detail::notype
+ >
+ >
+ {
+ };
+
+ }
+ }
+
 #endif // TTI_MEMBER_TYPE_HPP

Modified: trunk/boost/tti/mf/mf_has_member_data.hpp
==============================================================================
--- trunk/boost/tti/mf/mf_has_member_data.hpp (original)
+++ trunk/boost/tti/mf/mf_has_member_data.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -32,17 +32,25 @@
     /// A metafunction which checks whether a member data exists within an enclosing type.
     /**
 
- This metafunction takes its specific types as nullary metafunctions whose typedef 'type' member is the actual type used.
+ This metafunction takes its specific class types as nullary metafunctions whose typedef 'type' member is the actual type used.
     
+ template<class TTI_HasMemberData,class TTI_T,class TTI_Type>
+ struct mf_has_member_data
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
         The metafunction types and return:
 
- TTI_HasMemberData = a Boost MPL lambda expression using the metafunction generated from the TTI_HAS_MEMBER_DATA ( or TTI_TRAIT_HAS_MEMBER_DATA ) macro.<br />
+ TTI_HasMemberData = a Boost MPL lambda expression using the metafunction generated from the BOOST_TTI_HAS_MEMBER_DATA ( or BOOST_TTI_TRAIT_HAS_MEMBER_DATA ) macro.<br />
                               The easiest way to generate the lambda expression is to use a Boost MPL placeholder expression of the form 'metafunction\<_,_\>'.
                               You can also use a metafunction class generated by boost::mpl::quote2.
                           
           TTI_T = the enclosing type as a nullary metafunction.
           
- TTI_R = the type of the member data as a nullary metafunction.
+ TTI_Type = the type of the member data as a nullary metafunction.
+ If the type is not a class type it may be passed as is.
       
           returns = 'value' is true if the member data exists within the enclosing type,
                     otherwise 'value' is false.
@@ -52,14 +60,14 @@
       <
       class TTI_HasMemberData,
       class TTI_T,
- class TTI_R
+ class TTI_Type
>
     struct mf_has_member_data :
       boost::mpl::apply
         <
         TTI_HasMemberData,
         typename TTI_T::type,
- typename BOOST_TTI_NAMESPACE::detail::tclass<TTI_R>::type
+ typename BOOST_TTI_NAMESPACE::detail::tclass<TTI_Type>::type
>::type
       {
       };

Modified: trunk/boost/tti/mf/mf_has_member_function.hpp
==============================================================================
--- trunk/boost/tti/mf/mf_has_member_function.hpp (original)
+++ trunk/boost/tti/mf/mf_has_member_function.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -35,23 +35,32 @@
     /// A metafunction which checks whether a member function exists within an enclosing type.
     /**
 
- This metafunction takes its specific types, except for the optional parameters, as nullary metafunctions whose typedef 'type' member is the actual type used.
+ This metafunction takes its specific class types, except for the optional parameters, as nullary metafunctions whose typedef 'type' member is the actual type used.
     
+ template<class TTI_HasMemberFunction,class TTI_T,class TTI_R,class TTI_FS = boost::mpl::vector<>,class TTI_TAG = boost::function_types::null_tag>
+ struct mf_has_member_function
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
         The metafunction types and return:
 
- TTI_HasMemberFunction = a Boost MPL lambda expression using the metafunction generated from the TTI_HAS_MEMBER_FUNCTION ( or TTI_TRAIT_HAS_MEMBER_FUNCTION ) macro.<br />
+ TTI_HasMemberFunction = a Boost MPL lambda expression using the metafunction generated from the BOOST_TTI_HAS_MEMBER_FUNCTION ( or BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION ) macro.<br />
                                   The easiest way to generate the lambda expression is to use a Boost MPL placeholder expression of the form 'metafunction\<_,_\> ( or optionally 'metafunction\<_,_,_\> or ' 'metafunction\<_,_,_,_\> )'.
                                   You can also use a metafunction class generated by boost::mpl::quote4.
                               
           TTI_T = the enclosing type as a nullary metafunction.
           
           TTI_R = the return type of the member function as a nullary metafunction.
+ If the type is not a class type it may be passed as is.
           
           TTI_FS = an optional parameter which is the parameters of the member function, each as a nullary metafunction, as a boost::mpl forward sequence.<br />
- This parameter defaults to boost::mpl::vector<>.
+ This parameter defaults to boost::mpl::vector<>. Each parameter is a nullary
+ metafunction, but if the type is a non-class type it may be passed as is.
                       
           TTI_TAG = an optional parameter which is a boost::function_types tag to apply to the member function.<br />
- This parameter defaults to boost::function_types::null_tag.
+ This parameter defaults to boost::function_types::null_tag.
       
           returns = 'value' is true if the member function exists within the enclosing type,
                     otherwise 'value' is false.

Modified: trunk/boost/tti/mf/mf_has_static_member_data.hpp
==============================================================================
--- trunk/boost/tti/mf/mf_has_static_member_data.hpp (original)
+++ trunk/boost/tti/mf/mf_has_static_member_data.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -32,19 +32,27 @@
     /// A metafunction which checks whether a static member data exists within an enclosing type.
     /**
 
- This metafunction takes its specific types as nullary metafunctions whose typedef 'type' member is the actual type used.
+ This metafunction takes its specific class types as nullary metafunctions whose typedef 'type' member is the actual type used.
     
+ template<class TTI_HasStaticMemberData,class TTI_T,class TTI_Type>
+ struct mf_has_member_data
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
         The metafunction types and return:
 
- TTI_HasStaticMemberData = a Boost MPL lambda expression using the metafunction generated from the TTI_HAS_STATIC_MEMBER_DATA ( or TTI_TRAIT_HAS_STATIC_MEMBER_DATA ) macro.<br />
+ TTI_HasStaticMemberData = a Boost MPL lambda expression using the metafunction generated from the BOOST_TTI_HAS_STATIC_MEMBER_DATA ( or BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_DATA ) macro.<br />
                                    The easiest way to generate the lambda expression is to use a Boost MPL placeholder expression of the form 'metafunction\<_,_\>'.
                                    You can also use a metafunction class generated by boost::mpl::quote2.
                             
- TTI_T = the enclosing type as a nullary metafunction.
+ TTI_T = the enclosing type as a nullary metafunction.
           
- TTI_R = the type of the static member data as a nullary metafunction.
+ TTI_Type = the type of the static member data as a nullary metafunction.
+ If the type is not a class type it may be passed as is.
       
- returns = 'value' is true if the member data exists within the enclosing type,
+ returns = 'value' is true if the static member data exists within the enclosing type,
                     otherwise 'value' is false.
                           
     */
@@ -52,14 +60,14 @@
       <
       class TTI_HasStaticMemberData,
       class TTI_T,
- class TTI_R
+ class TTI_Type
>
     struct mf_has_static_member_data :
       boost::mpl::apply
         <
         TTI_HasStaticMemberData,
         typename TTI_T::type,
- typename BOOST_TTI_NAMESPACE::detail::tclass<TTI_R>::type
+ typename BOOST_TTI_NAMESPACE::detail::tclass<TTI_Type>::type
>::type
       {
       };

Modified: trunk/boost/tti/mf/mf_has_static_member_function.hpp
==============================================================================
--- trunk/boost/tti/mf/mf_has_static_member_function.hpp (original)
+++ trunk/boost/tti/mf/mf_has_static_member_function.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -35,23 +35,35 @@
     /// A metafunction which checks whether a static member function exists within an enclosing type.
     /**
 
- This metafunction takes its specific types, except for the optional parameters, as nullary metafunctions whose typedef 'type' member is the actual type used.
+ This metafunction takes its specific class types, except for the optional parameters, as nullary metafunctions whose typedef 'type' member is the actual type used.
     
+ template<class TTI_HasStaticMemberFunction,class TTI_T,class TTI_R,class TTI_FS = boost::mpl::vector<>,class TTI_TAG = boost::function_types::null_tag>
+ struct mf_has_static_member_function
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
         The metafunction types and return:
 
- TTI_HasStaticMemberFunction = a Boost MPL lambda expression using the metafunction generated from the TTI_HAS_STATIC_MEMBER_FUNCTION ( or TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION ) macro.<br />
+ TTI_HasStaticMemberFunction = a Boost MPL lambda expression using the metafunction generated from the BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION ( or BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION ) macro.<br />
                                         The easiest way to generate the lambda expression is to use a Boost MPL placeholder expression of the form 'metafunction\<_,_\> ( or optionally 'metafunction\<_,_,_\> or ' 'metafunction\<_,_,_,_\> )'.
                                         You can also use a metafunction class generated by boost::mpl::quote4.
                                     
           TTI_T = the enclosing type as a nullary metafunction.
           
           TTI_R = the return type of the static member function as a nullary metafunction.
+ If the type is not a class type it may be passed as is.
           
- TTI_FS = an optional parameter which is the parameters of the static member function, each as a nullary metafunction, as a boost::mpl forward sequence.
+ TTI_FS = an optional parameter which is the parameters of the static member function, each class type as a nullary metafunction, as a boost::mpl forward sequence.
+ This parameter defaults to boost::mpl::vector<>. Each parameter is a nullary
+ metafunction, but if the type is a non-class type it may be passed as is.
           
           TTI_TAG = an optional parameter which is a boost::function_types tag to apply to the static member function.
+ This parameter defaults to boost::function_types::null_tag.
       
- returns = 'value' is true if the member function exists within the enclosing type,
+ returns = 'value' is true if the static member function
+ exists within the enclosing type,
                     otherwise 'value' is false.
                           
     */

Modified: trunk/boost/tti/mf/mf_has_template.hpp
==============================================================================
--- trunk/boost/tti/mf/mf_has_template.hpp (original)
+++ trunk/boost/tti/mf/mf_has_template.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -32,9 +32,16 @@
 
         This metafunction takes its enclosing type as nullary metafunctions whose typedef 'type' member is the actual type used.
     
+ template<class TTI_HasTemplate,class TTI_T>
+ struct mf_has_template
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
         The metafunction types and return:
 
- TTI_HasTemplate = a Boost MPL lambda expression using the metafunction generated from the TTI_HAS_TEMPLATE ( TTI_TRAIT_HAS_TEMPLATE ) macro.<br />
+ TTI_HasTemplate = a Boost MPL lambda expression using the metafunction generated from the BOOST_TTI_HAS_TEMPLATE ( BOOST_TTI_TRAIT_HAS_TEMPLATE ) macro.<br />
                             The easiest way to generate the lambda expression is to use a Boost MPL placeholder expression of the form 'metafunction\<_\>'.
                             You can also use a metafunction class generated by boost::mpl::quote1.
                         
@@ -43,6 +50,8 @@
           returns = 'value' is true if the template exists within the enclosing type,
                     otherwise 'value' is false.
                           
+ The template being introspected must have all 'class' ( or 'typename' ) parameters types.
+
     */
     template
       <

Modified: trunk/boost/tti/mf/mf_has_template_check_params.hpp
==============================================================================
--- trunk/boost/tti/mf/mf_has_template_check_params.hpp (original)
+++ trunk/boost/tti/mf/mf_has_template_check_params.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -32,10 +32,17 @@
 
       This metafunction takes its enclosing type as nullary metafunctions whose typedef 'type' member is the actual type used.
     
+ template<class TTI_HasTemplateCheckParams,class TTI_T>
+ struct mf_has_template_check_params
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
       The metafunction types and return:
 
- TTI_HasTemplateCheckParams = a Boost MPL lambda expression using the metafunction generated from either the TTI_HAS_TEMPLATE_CHECK_PARAMS ( TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS )
- or TTI_VM_HAS_TEMPLATE_CHECK_PARAMS ( TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS ) macros.<br />
+ TTI_HasTemplateCheckParams = a Boost MPL lambda expression using the metafunction generated from either the BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS ( BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS )
+ or BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS ( BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS ) macros.<br />
                                      The easiest way to generate the lambda expression is to use a Boost MPL placeholder expression of the form 'metafunction\<_\>'.
                                      You can also use a metafunction class generated by boost::mpl::quote1.
                       
@@ -44,6 +51,9 @@
         returns = 'value' is true if the template exists within the enclosing type,
                   otherwise 'value' is false.
                           
+ The template being introspected has the parameters specified by the macro metafunction passed as the first parameter
+ to this metafunction.
+
   */
     template
       <

Modified: trunk/boost/tti/mf/mf_has_type.hpp
==============================================================================
--- trunk/boost/tti/mf/mf_has_type.hpp (original)
+++ trunk/boost/tti/mf/mf_has_type.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -33,17 +33,27 @@
     /// A metafunction which checks whether a type exists within an enclosing type and optionally is a particular type.
     /**
 
- This metafunction takes its specific types as nullary metafunctions whose typedef 'type' member is the actual type used.
+ This metafunction takes its specific class types as nullary metafunctions whose typedef 'type' member is the actual type used.
     
+ template<class TTI_HasType,class TTI_T,class TTI_U = boost::mpl::identity<boost::tti::detail::notype> >
+ struct mf_has_type
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
         The metafunction types and return:
 
- TTI_HasType = a Boost MPL lambda expression using the metafunction generated from the TTI_HAS_TYPE ( or TTI_TRAIT_HAS_TYPE ) macro.<br />
+ TTI_HasType = a Boost MPL lambda expression using the metafunction generated from the BOOST_TTI_HAS_TYPE ( or BOOST_TTI_TRAIT_HAS_TYPE ) macro.<br />
                         The easiest way to generate the lambda expression is to use a Boost MPL placeholder expression of the form 'metafunction\<_\>' ( or optionally 'metafunction\<_,_\>' ).
                         You can also use a metafunction class generated by boost::mpl::quote2.
                     
           TTI_T = the enclosing type as a nullary metafunction.
           
- TTI_U = the type of the inner type as a nullary metafunction, as an optional parameter.
+ TTI_U = the type of the inner type as a nullary metafunction.
+ If the type is not a class type it may be passed as is.
+ This is an optional parameter. It defaults to an internal
+ marker type called boost::tti::detail::notype.
       
           returns = 'value' is true if the type exists within the enclosing type
                     and, if type U is specified, the type is the same as the type U,

Modified: trunk/boost/tti/mf/mf_member_type.hpp
==============================================================================
--- trunk/boost/tti/mf/mf_member_type.hpp (original)
+++ trunk/boost/tti/mf/mf_member_type.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -31,40 +31,22 @@
   namespace tti
     {
   
- /// A metafunction which checks whether the member 'type' returned from invoking the macro metafunction generated by TTI_MEMBER_TYPE ( TTI_TRAIT_MEMBER_TYPE ) or from invoking boost::tti::mf_member_type is a valid type.
+ /// A metafunction which checks whether the member 'type' returned from invoking the macro metafunction generated by BOOST_TTI_MEMBER_TYPE ( BOOST_TTI_TRAIT_MEMBER_TYPE ) or from invoking boost::tti::mf_member_type is a valid type.
     /**
 
- The metafunction types and return:
-
- TTI_T = returned inner 'type' from invoking the macro metafunction generated by TTI_MEMBER_TYPE ( TTI_TRAIT_MEMBER_TYPE ) or from invoking boost::tti::mf_member_type.
-
- returns = 'value' is true if the type is valid, otherwise 'value' is false.
-
- */
- template
- <
- class TTI_T
- >
- struct valid_member_type :
- boost::mpl::not_
- <
- boost::is_same
- <
- TTI_T,
- BOOST_TTI_NAMESPACE::detail::notype
- >
- >
- {
- };
-
- /// A metafunction which checks whether the member 'type' returned from invoking the macro metafunction generated by TTI_MEMBER_TYPE ( TTI_TRAIT_MEMBER_TYPE ) or from invoking boost::tti::mf_member_type is a valid type.
- /**
+ template<class TTI_T>
+ struct mf_valid_member_type
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
 
         The metafunction types and return:
 
- TTI_T = the nullary metafunction from invoking the macro metafunction generated by TTI_MEMBER_TYPE ( TTI_TRAIT_MEMBER_TYPE ) or from invoking boost::tti::mf_member_type.
+ TTI_T = the nullary metafunction from invoking the macro metafunction generated by BOOST_TTI_MEMBER_TYPE ( BOOST_TTI_TRAIT_MEMBER_TYPE ) or from invoking boost::tti::mf_member_type.
       
           returns = 'value' is true if the type is valid, otherwise 'value' is false.
+ Validity means that the type being tested is not equal to an unspecified marker type.
                           
     */
     template
@@ -88,26 +70,32 @@
 
         This metafunction takes its enclosing type as a nullary metafunction whose typedef 'type' member is the actual type used.
     
+ template<class TTI_MemberType,class TTI_T>
+ struct mf_member_type
+ {
+ typedef unspecified type;
+ };
+
         The metafunction types and return:
 
- TTI_MemberType = a Boost MPL lambda expression using the metafunction generated from the TTI_MEMBER_TYPE ( or TTI_TRAIT_MEMBER_TYPE ) macro.<br />
+ TTI_MemberType = a Boost MPL lambda expression using the metafunction generated from the BOOST_TTI_MEMBER_TYPE ( or BOOST_TTI_TRAIT_MEMBER_TYPE ) macro.<br />
                            The easiest way to generate the lambda expression is to use a Boost MPL placeholder expression of the form 'metafunction\<_\>'.
                            You can also use a metafunction class generated by boost::mpl::quote1.
                        
           TTI_T = the enclosing type as a nullary metafunction.
       
- returns = 'type' is the inner type of the 'name' in TTI_MEMBER_TYPE ( or TTI_TRAIT_MEMBER_TYPE )
+ returns = 'type' is the inner type of the 'name' in BOOST_TTI_MEMBER_TYPE ( or BOOST_TTI_TRAIT_MEMBER_TYPE )
                     if the inner type exists within the enclosing type,
                     else 'type' is an unspecified type.
                           
         The purpose of this metafunction is to encapsulate the 'name' type
- in TTI_MEMBER_TYPE ( or TTI_TRAIT_MEMBER_TYPE ) as the typedef 'type'
+ in BOOST_TTI_MEMBER_TYPE ( or BOOST_TTI_TRAIT_MEMBER_TYPE ) as the typedef 'type'
         of a metafunction, but only if it exists within the enclosing type. This allows for
- a lazy evaluation of inner type existence which can be used by other metafunctions
- in this library.
+ a evaluation of inner type existence, without generating a compiler error,
+ which can be used by other metafunctions in this library.
     
         Furthermore this metafunction allows the enclosing type to be return type from either the
- metafunction generated from TTI_MEMBER_TYPE ( or TTI_TRAIT_MEMBER_TYPE ) or from this
+ metafunction generated from BOOST_TTI_MEMBER_TYPE ( or BOOST_TTI_TRAIT_MEMBER_TYPE ) or from this
         metafunction itself.
     
     */

Modified: trunk/boost/tti/tti.hpp
==============================================================================
--- trunk/boost/tti/tti.hpp (original)
+++ trunk/boost/tti/tti.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -17,5 +17,13 @@
 #include "has_template_check_params.hpp"
 #include "has_type.hpp"
 #include "member_type.hpp"
+#include "mf/mf_has_member_data.hpp"
+#include "mf/mf_has_member_function.hpp"
+#include "mf/mf_has_static_member_data.hpp"
+#include "mf/mf_has_static_member_function.hpp"
+#include "mf/mf_has_template.hpp"
+#include "mf/mf_has_template_check_params.hpp"
+#include "mf/mf_has_type.hpp"
+#include "mf/mf_member_type.hpp"
 
 #endif // TT_INTROSPECTION_HPP

Modified: trunk/boost/tti/vm_has_template_check_params.hpp
==============================================================================
--- trunk/boost/tti/vm_has_template_check_params.hpp (original)
+++ trunk/boost/tti/vm_has_template_check_params.hpp 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -33,14 +33,21 @@
     
     ... = variadic macro data which has the class template parameters.
 
- returns = a metafunction called "boost::tti::trait" where 'trait' is the macro parameter.
+ generates a metafunction called "trait" where 'trait' is the macro parameter.
     
+ template<class TTI_T>
+ struct trait
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
               The metafunction types and return:
     
                 TTI_T = the enclosing type in which to look for our 'name'.
                 
                 returns = 'value' is true if the 'name' class template, with the signature
- as defined by the '...' variadic macro data, exists within the enclosing type,
+ as defined by the '...' variadic macro data, exists within the enclosing TTI_T type,
                           otherwise 'value' is false.
     
 */
@@ -62,14 +69,21 @@
     
     ... = variadic macro data which has the class template parameters.
 
- returns = a metafunction called "boost::tti::has_template_check_params_name" where 'name' is the macro parameter.
+ generates a metafunction called "has_template_check_params_name" where 'name' is the macro parameter.
     
+ template<class TTI_T>
+ struct has_template_check_params_name
+ {
+ static const value = unspecified;
+ typedef mpl::bool_<true-or-false> type;
+ };
+
               The metafunction types and return:
     
                 TTI_T = the enclosing type in which to look for our 'name'.
                 
                 returns = 'value' is true if the 'name' class template, with the signature
- as defined by the '...' variadic macro data, exists within the enclosing type,
+ as defined by the '...' variadic macro data, exists within the enclosing TTI_T type,
                           otherwise 'value' is false.
     
 */

Modified: trunk/libs/tti/doc/html/BOOST_TTI_HAS_MEMBER_DATA.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_HAS_MEMBER_DATA.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_HAS_MEMBER_DATA.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,13 +26,14 @@
 
 </span>BOOST_TTI_HAS_MEMBER_DATA(name)</pre></div>
 <div class="refsect1">
-<a name="id965682"></a><h2>Description</h2>
+<a name="id935534"></a><h2>Description</h2>
 <p>name = the name of the inner member.</p>
-<p>returns = a metafunction called "boost::tti::has_member_data_name" where 'name' is the macro parameter.</p>
+<p>generates a metafunction called "has_member_data_name" where 'name' is the macro parameter.</p>
+<p>template&lt;class TTI_T,class TTI_Type&gt; struct has_member_data_name { static const value = unspecified; typedef mpl::bool_&lt;true-or-false&gt; type; };</p>
 <p>The metafunction types and return:</p>
 <p>TTI_T = the enclosing type in which to look for our 'name'.</p>
-<p>TTI_R = the type of the member data.</p>
-<p>returns = 'value' is true if the 'name' exists, with the appropriate type, otherwise 'value' is false. </p>
+<p>TTI_Type = the type of the member data.</p>
+<p>returns = 'value' is true if the 'name' exists, with the TTI_Type data type, within the enclosing TTI_T type, otherwise 'value' is false. </p>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_HAS_MEMBER_DATA_GEN.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_HAS_MEMBER_DATA_GEN.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_HAS_MEMBER_DATA_GEN.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,7 +26,7 @@
 
 </span>BOOST_TTI_HAS_MEMBER_DATA_GEN(name)</pre></div>
 <div class="refsect1">
-<a name="id964960"></a><h2>Description</h2>
+<a name="id934811"></a><h2>Description</h2>
 <p>name = the name of the member data.</p>
 <p>returns = the generated macro metafunction name. </p>
 </div>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_HAS_MEMBER_FUNCTION.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_HAS_MEMBER_FUNCTION.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_HAS_MEMBER_FUNCTION.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,15 +26,16 @@
 
 </span>BOOST_TTI_HAS_MEMBER_FUNCTION(name)</pre></div>
 <div class="refsect1">
-<a name="id965809"></a><h2>Description</h2>
+<a name="id935666"></a><h2>Description</h2>
 <p>name = the name of the inner member.</p>
-<p>returns = a metafunction called "boost::tti::has_member_function_name" where 'name' is the macro parameter.</p>
+<p>generates a metafunction called "has_member_function_name" where 'name' is the macro parameter.</p>
+<p>template&lt;class TTI_T,class TTI_R,class TTI_FS,class TTI_TAG&gt; struct has_member_function_name { static const value = unspecified; typedef mpl::bool_&lt;true-or-false&gt; type; };</p>
 <p>The metafunction types and return:</p>
 <p>TTI_T = the enclosing type in which to look for our 'name'.</p>
 <p>TTI_R = the return type of the member function.</p>
 <p>TTI_FS = an optional parameter which are the parameters of the member function as a boost::mpl forward sequence.</p>
 <p>TTI_TAG = an optional parameter which is a boost::function_types tag to apply to the member function.</p>
-<p>returns = 'value' is true if the 'name' exists, with the appropriate type, otherwise 'value' is false. </p>
+<p>returns = 'value' is true if the 'name' exists, with the appropriate member function type, as defined by TTI_R, TTI_FS, and TTI_TAG, within the enclosing TTI_T type, otherwise 'value' is false. </p>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_HAS_MEMBER_FUNCTION_GEN.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_HAS_MEMBER_FUNCTION_GEN.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_HAS_MEMBER_FUNCTION_GEN.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,7 +26,7 @@
 
 </span>BOOST_TTI_HAS_MEMBER_FUNCTION_GEN(name)</pre></div>
 <div class="refsect1">
-<a name="id965014"></a><h2>Description</h2>
+<a name="id934865"></a><h2>Description</h2>
 <p>name = the name of the member function.</p>
 <p>returns = the generated macro metafunction name. </p>
 </div>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_HAS_STATIC_MEMBER_DATA.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_HAS_STATIC_MEMBER_DATA.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_HAS_STATIC_MEMBER_DATA.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,14 +26,13 @@
 
 </span>BOOST_TTI_HAS_STATIC_MEMBER_DATA(name)</pre></div>
 <div class="refsect1">
-<a name="id967210"></a><h2>Description</h2>
+<a name="id935910"></a><h2>Description</h2>
 <p>name = the name of the inner member.</p>
-<p>returns = a metafunction called "boost::tti::has_static_member_name" where 'name' is the macro parameter.<br>
-</p>
+<p>generates a metafunction called "has_static_member_name" where 'name' is the macro parameter.</p>
 <p>The metafunction types and return:</p>
 <p>TTI_T = the enclosing type.</p>
 <p>TTI_Type = the static member data type, in the form of a data type, in which to look for our 'name'.</p>
-<p>returns = 'value' is true if the 'name' exists within the enclosing type, with the appropriate type, otherwise 'value' is false. </p>
+<p>returns = 'value' is true if the 'name' exists, with the appropriate TTI_Type type, within the enclosing TTI_T type, otherwise 'value' is false. </p>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_HAS_STATIC_MEMBER_DATA_GEN.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_HAS_STATIC_MEMBER_DATA_GEN.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_HAS_STATIC_MEMBER_DATA_GEN.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,7 +26,7 @@
 
 </span>BOOST_TTI_HAS_STATIC_MEMBER_DATA_GEN(name)</pre></div>
 <div class="refsect1">
-<a name="id965129"></a><h2>Description</h2>
+<a name="id934980"></a><h2>Description</h2>
 <p>name = the name of the static member data.</p>
 <p>returns = the generated macro metafunction name. </p>
 </div>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,15 +26,16 @@
 
 </span>BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION(name)</pre></div>
 <div class="refsect1">
-<a name="id967339"></a><h2>Description</h2>
+<a name="id936036"></a><h2>Description</h2>
 <p>name = the name of the inner member.</p>
-<p>returns = a metafunction called "boost::tti::has_static_member_function_name" where 'name' is the macro parameter.</p>
+<p>generates a metafunction called "has_static_member_function_name" where 'name' is the macro parameter.</p>
+<p>template&lt;class TTI_T,class TTI_R,class TTI_FS,class TTI_TAG&gt; struct trait { static const value = unspecified; typedef mpl::bool_&lt;true-or-false&gt; type; };</p>
 <p>The metafunction types and return:</p>
 <p>TTI_T = the enclosing type in which to look for our 'name'.</p>
 <p>TTI_R = the return type of the static member function.</p>
 <p>TTI_FS = an optional parameter which are the parameters of the static member function as a boost::mpl forward sequence.</p>
 <p>TTI_TAG = an optional parameter which is a boost::function_types tag to apply to the static member function.</p>
-<p>returns = 'value' is true if the 'name' exists, with the appropriate type, otherwise 'value' is false. </p>
+<p>returns = 'value' is true if the 'name' exists, with the appropriate static member function type, as defined by TTI_R, TTI_FS, and TTI_TAG, within the enclosing TTI_T type, otherwise 'value' is false. </p>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_GEN.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_GEN.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_GEN.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,7 +26,7 @@
 
 </span>BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_GEN(name)</pre></div>
 <div class="refsect1">
-<a name="id965184"></a><h2>Description</h2>
+<a name="id935036"></a><h2>Description</h2>
 <p>name = the name of the static member function.</p>
 <p>returns = the generated macro metafunction name. </p>
 </div>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_HAS_TEMPLATE.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_HAS_TEMPLATE.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_HAS_TEMPLATE.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,9 +26,10 @@
 
 </span>BOOST_TTI_HAS_TEMPLATE(name)</pre></div>
 <div class="refsect1">
-<a name="id967593"></a><h2>Description</h2>
+<a name="id936298"></a><h2>Description</h2>
 <p>name = the name of the inner template.</p>
-<p>returns = a metafunction called "boost::tti::has_template_name" where 'name' is the macro parameter.</p>
+<p>generates a metafunction called "has_template_name" where 'name' is the macro parameter.</p>
+<p>template&lt;class TTI_T&gt; struct has_template_name { static const value = unspecified; typedef mpl::bool_&lt;true-or-false&gt; type; };</p>
 <p>The metafunction types and return:</p>
 <p>TTI_T = the enclosing type in which to look for our 'name'.</p>
 <p>returns = 'value' is true if the 'name' template exists within the enclosing type, otherwise 'value' is false.</p>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,13 +26,14 @@
 
 </span>BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS(name, tpSeq)</pre></div>
 <div class="refsect1">
-<a name="id967714"></a><h2>Description</h2>
+<a name="id936424"></a><h2>Description</h2>
 <p>name = the name of the inner class template.</p>
 <p>tpSeq = a Boost PP sequence which has the class template parameters. Each part of the template parameters separated by a comma ( , ) is put in a separate sequence element.</p>
-<p>returns = a metafunction called "boost::tti::has_template_check_params_name" where 'name' is the macro parameter.</p>
+<p>generates a metafunction called "has_template_check_params_name" where 'name' is the macro parameter.</p>
+<p>template&lt;class TTI_T&gt; struct has_template_check_params_name { static const value = unspecified; typedef mpl::bool_&lt;true-or-false&gt; type; };</p>
 <p>The metafunction types and return:</p>
 <p>TTI_T = the enclosing type in which to look for our 'name'.</p>
-<p>returns = 'value' is true if the 'name' class template with the signature as defined by the 'tpSeq' exists within the enclosing type, otherwise 'value' is false. </p>
+<p>returns = 'value' is true if the 'name' class template with the signature as defined by the 'tpSeq' exists within the enclosing TTI_T type, otherwise 'value' is false. </p>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS_GEN.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS_GEN.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS_GEN.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,7 +26,7 @@
 
 </span>BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS_GEN(name)</pre></div>
 <div class="refsect1">
-<a name="id965296"></a><h2>Description</h2>
+<a name="id935147"></a><h2>Description</h2>
 <p>name = the name of the class template.</p>
 <p>returns = the generated macro metafunction name. </p>
 </div>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_HAS_TEMPLATE_GEN.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_HAS_TEMPLATE_GEN.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_HAS_TEMPLATE_GEN.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,7 +26,7 @@
 
 </span>BOOST_TTI_HAS_TEMPLATE_GEN(name)</pre></div>
 <div class="refsect1">
-<a name="id965350"></a><h2>Description</h2>
+<a name="id935201"></a><h2>Description</h2>
 <p>name = the name of the class template.</p>
 <p>returns = the generated macro metafunction name. </p>
 </div>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_HAS_TYPE.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_HAS_TYPE.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_HAS_TYPE.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,13 +26,14 @@
 
 </span>BOOST_TTI_HAS_TYPE(name)</pre></div>
 <div class="refsect1">
-<a name="id967834"></a><h2>Description</h2>
+<a name="id937279"></a><h2>Description</h2>
 <p>name = the name of the inner type.</p>
-<p>returns = a metafunction called "boost::tti::has_type_name" where 'name' is the macro parameter.</p>
+<p>generates a metafunction called "has_type_name" where 'name' is the macro parameter.</p>
+<p>template&lt;class TTI_T,class TTI_U&gt; struct has_type_name { static const value = unspecified; typedef mpl::bool_&lt;true-or-false&gt; type; };</p>
 <p>The metafunction types and return:</p>
 <p>TTI_T = the enclosing type in which to look for our 'name'.</p>
 <p>TTI_U = the type of the inner type named 'name' as an optional parameter.</p>
-<p>returns = 'value' is true if the 'name' type exists within the enclosing type and, if type U is specified, the 'name' type is the same as the type U, otherwise 'value' is false. </p>
+<p>returns = 'value' is true if the 'name' type exists within the enclosing type TTI_T and, if type TTI_U is specified, the 'name' type is the same as the type TTI_U, otherwise 'value' is false. </p>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_HAS_TYPE_GEN.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_HAS_TYPE_GEN.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_HAS_TYPE_GEN.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,7 +26,7 @@
 
 </span>BOOST_TTI_HAS_TYPE_GEN(name)</pre></div>
 <div class="refsect1">
-<a name="id965405"></a><h2>Description</h2>
+<a name="id935256"></a><h2>Description</h2>
 <p>name = the name of the type.</p>
 <p>returns = the generated macro metafunction name. </p>
 </div>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_MEMBER_TYPE.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_MEMBER_TYPE.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_MEMBER_TYPE.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,13 +26,14 @@
 
 </span>BOOST_TTI_MEMBER_TYPE(name)</pre></div>
 <div class="refsect1">
-<a name="id967958"></a><h2>Description</h2>
+<a name="id937556"></a><h2>Description</h2>
 <p>name = the name of the inner type.</p>
-<p>returns = a metafunction called "boost::tti::member_type_name" where 'name' is the macro parameter.</p>
+<p>generates a metafunction called "member_type_name" where 'name' is the macro parameter.</p>
+<p>template&lt;class TTI_T&gt; struct member_type_name { typedef unspecified type; };</p>
 <p>The metafunction types and return:</p>
 <p>TTI_T = the enclosing type.</p>
-<p>returns = 'type' is the inner type of 'name' if the inner type exists within the enclosing type, else 'type' is an unspecified type.</p>
-<p>The purpose of this macro is to encapsulate the 'name' type as the typedef 'type' of a metafunction, but only if it exists within the enclosing type. This allows for a lazy evaluation of inner type existence which can be used by other metafunctions in this library. </p>
+<p>returns = 'type' is the inner type of 'name' if the inner type exists within the enclosing type, else 'type' is an unspecified marker type.</p>
+<p>The purpose of this macro is to encapsulate the 'name' type as the typedef 'type' of a metafunction, but only if it exists within the enclosing type. This allows for an evaluation of inner type existence, without genrating a compiler error, which can be used by other metafunctions in this library. </p>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_MEMBER_TYPE_GEN.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_MEMBER_TYPE_GEN.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_MEMBER_TYPE_GEN.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,7 +26,7 @@
 
 </span>BOOST_TTI_MEMBER_TYPE_GEN(name)</pre></div>
 <div class="refsect1">
-<a name="id965459"></a><h2>Description</h2>
+<a name="id935310"></a><h2>Description</h2>
 <p>name = the name of the inner type.</p>
 <p>returns = the generated macro metafunction name. </p>
 </div>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_NAMESPACE.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_NAMESPACE.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_NAMESPACE.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,7 +26,7 @@
 
 </span>BOOST_TTI_NAMESPACE</pre></div>
 <div class="refsect1">
-<a name="id965512"></a><h2>Description</h2>
+<a name="id935363"></a><h2>Description</h2>
 <p>returns = the generated name of the Boost TTI namespace. </p>
 </div>
 </div>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_MEMBER_DATA.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_MEMBER_DATA.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_MEMBER_DATA.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,15 +26,15 @@
 
 </span>BOOST_TTI_TRAIT_HAS_MEMBER_DATA(trait, name)</pre></div>
 <div class="refsect1">
-<a name="id965629"></a><h2>Description</h2>
+<a name="id935481"></a><h2>Description</h2>
 <p>trait = the name of the metafunction within the tti namespace.</p>
-<p>name = the name of the inner member.</p>
-<p>returns = a metafunction called "boost::tti::trait" where 'trait' is the macro parameter.<br>
-</p>
+<p>name = the name of the inner member to introspect.</p>
+<p>generates a metafunction called "trait" where 'trait' is the macro parameter.</p>
+<p>template&lt;class TTI_T,class TTI_Type&gt; struct trait { static const value = unspecified; typedef mpl::bool_&lt;true-or-false&gt; type; };</p>
 <p>The metafunction types and return:</p>
 <p>TTI_T = the enclosing type in which to look for our 'name'.</p>
-<p>TTI_R = the type of the member data.</p>
-<p>returns = 'value' is true if the 'name' exists, with the appropriate type, otherwise 'value' is false. </p>
+<p>TTI_Type = the type of the member data.</p>
+<p>returns = 'value' is true if the 'name' exists, with the TTI_Type data type, within the enclosing TTI_T type, otherwise 'value' is false. </p>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,17 +26,18 @@
 
 </span>BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION(trait, name)</pre></div>
 <div class="refsect1">
-<a name="id965752"></a><h2>Description</h2>
+<a name="id935606"></a><h2>Description</h2>
 <p>trait = the name of the metafunction within the tti namespace.</p>
 <p>name = the name of the inner member.</p>
-<p>returns = a metafunction called "boost::tti::trait" where 'trait' is the macro parameter.<br>
+<p>generates a metafunction called "trait" where 'trait' is the macro parameter.<br>
 </p>
+<p>template&lt;class TTI_T,class TTI_R,class TTI_FS,class TTI_TAG&gt; struct trait { static const value = unspecified; typedef mpl::bool_&lt;true-or-false&gt; type; };</p>
 <p>The metafunction types and return:</p>
 <p>TTI_T = the enclosing type in which to look for our 'name'.</p>
 <p>TTI_R = the return type of the member function.</p>
 <p>TTI_FS = an optional parameter which are the parameters of the member function as a boost::mpl forward sequence.</p>
 <p>TTI_TAG = an optional parameter which is a boost::function_types tag to apply to the member function.</p>
-<p>returns = 'value' is true if the 'name' exists, with the appropriate type, otherwise 'value' is false. </p>
+<p>returns = 'value' is true if the 'name' exists, with the appropriate member function type, as defined by TTI_R, TTI_FS, and TTI_TAG, within the enclosing TTI_T type, otherwise 'value' is false. </p>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_DATA.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_DATA.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_DATA.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,14 +26,14 @@
 
 </span>BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_DATA(trait, name)</pre></div>
 <div class="refsect1">
-<a name="id967161"></a><h2>Description</h2>
+<a name="id935861"></a><h2>Description</h2>
 <p>trait = the name of the metafunction within the tti namespace.</p>
 <p>name = the name of the inner member.</p>
-<p>returns = a metafunction called "boost::tti::trait" where 'trait' is the macro parameter.</p>
+<p>generates a metafunction called "trait" where 'trait' is the macro parameter.</p>
 <p>The metafunction types and return:</p>
 <p>TTI_T = the enclosing type.</p>
 <p>TTI_Type = the static member data type, in the form of a data type, in which to look for our 'name'.</p>
-<p>returns = 'value' is true if the 'name' exists within the enclosing type, with the appropriate type, otherwise 'value' is false. </p>
+<p>returns = 'value' is true if the 'name' exists, with the TTI_Type type, within the enclosing TTI_T type, otherwise 'value' is false. </p>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,17 +26,17 @@
 
 </span>BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION(trait, name)</pre></div>
 <div class="refsect1">
-<a name="id967281"></a><h2>Description</h2>
+<a name="id935979"></a><h2>Description</h2>
 <p>trait = the name of the metafunction within the tti namespace.</p>
 <p>name = the name of the inner member.</p>
-<p>returns = a metafunction called "boost::tti::trait" where 'trait' is the macro parameter.<br>
-</p>
+<p>generates a metafunction called "trait" where 'trait' is the macro parameter.</p>
+<p>template&lt;class TTI_T,class TTI_R,class TTI_FS,class TTI_TAG&gt; struct trait { static const value = unspecified; typedef mpl::bool_&lt;true-or-false&gt; type; };</p>
 <p>The metafunction types and return:</p>
 <p>TTI_T = the enclosing type in which to look for our 'name'.</p>
 <p>TTI_R = the return type of the static member function.</p>
 <p>TTI_FS = an optional parameter which are the parameters of the static member function as a boost::mpl forward sequence.</p>
 <p>TTI_TAG = an optional parameter which is a boost::function_types tag to apply to the static member function.</p>
-<p>returns = 'value' is true if the 'name' exists, with the appropriate type, otherwise 'value' is false. </p>
+<p>returns = 'value' is true if the 'name' exists, with the appropriate static member function type, as defined by TTI_R, TTI_FS, and TTI_TAG, within the enclosing TTI_T type, otherwise 'value' is false. </p>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_TEMPLATE.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_TEMPLATE.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_TEMPLATE.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,10 +26,11 @@
 
 </span>BOOST_TTI_TRAIT_HAS_TEMPLATE(trait, name)</pre></div>
 <div class="refsect1">
-<a name="id967543"></a><h2>Description</h2>
+<a name="id936245"></a><h2>Description</h2>
 <p>trait = the name of the metafunction within the tti namespace.</p>
 <p>name = the name of the inner template.</p>
-<p>returns = a metafunction called "boost::tti::trait" where 'trait' is the macro parameter.</p>
+<p>generates a metafunction called "trait" where 'trait' is the macro parameter.</p>
+<p>template&lt;class TTI_T&gt; struct trait { static const value = unspecified; typedef mpl::bool_&lt;true-or-false&gt; type; };</p>
 <p>The metafunction types and return:</p>
 <p>TTI_T = the enclosing type in which to look for our 'name'.</p>
 <p>returns = 'value' is true if the 'name' template exists within the enclosing type, otherwise 'value' is false.</p>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,14 +26,15 @@
 
 </span>BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS(trait, name, tpSeq)</pre></div>
 <div class="refsect1">
-<a name="id967664"></a><h2>Description</h2>
+<a name="id936371"></a><h2>Description</h2>
 <p>trait = the name of the metafunction within the tti namespace.</p>
 <p>name = the name of the inner class template.</p>
 <p>tpSeq = a Boost PP sequence which has the class template parameters. Each part of the template parameters separated by a comma ( , ) is put in a separate sequence element.</p>
-<p>returns = a metafunction called "boost::tti::trait" where 'trait' is the macro parameter.</p>
+<p>generates a metafunction called "trait" where 'trait' is the macro parameter.</p>
+<p>template&lt;class TTI_T&gt; struct trait { static const value = unspecified; typedef mpl::bool_&lt;true-or-false&gt; type; };</p>
 <p>The metafunction types and return:</p>
 <p>TTI_T = the enclosing type in which to look for our 'name'.</p>
-<p>returns = 'value' is true if the 'name' class template with the signature as defined by the 'tpSeq' exists within the enclosing type, otherwise 'value' is false. </p>
+<p>returns = 'value' is true if the 'name' class template with the signature as defined by the 'tpSeq' exists within the enclosing TTI_T type, otherwise 'value' is false. </p>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_TYPE.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_TYPE.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_HAS_TYPE.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -19,21 +19,22 @@
 <a name="BOOST_TTI_TRAIT_HAS_TYPE"></a><div class="titlepage"></div>
 <div class="refnamediv">
 <h2><span class="refentrytitle">Macro BOOST_TTI_TRAIT_HAS_TYPE</span></h2>
-<p>BOOST_TTI_TRAIT_HAS_TYPE &#8212; Expands to a metafunction which tests whether an inner type with a particular name exists and optionally is a particular type. </p>
+<p>BOOST_TTI_TRAIT_HAS_TYPE &#8212; Expands to a metafunction which tests whether an inner type with a particular name exists and optionally is the same as a particular type. </p>
 </div>
 <h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
 <div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="header/boost/tti/has_type_hpp.html" title="Header &lt;boost/tti/has_type.hpp&gt;">boost/tti/has_type.hpp</a>&gt;
 
 </span>BOOST_TTI_TRAIT_HAS_TYPE(trait, name)</pre></div>
 <div class="refsect1">
-<a name="id967784"></a><h2>Description</h2>
+<a name="id936496"></a><h2>Description</h2>
 <p>trait = the name of the metafunction within the tti namespace.</p>
 <p>name = the name of the inner type.</p>
-<p>returns = a metafunction called "boost::tti::trait" where 'trait' is the macro parameter.</p>
+<p>generates a metafunction called "trait" where 'trait' is the macro parameter.</p>
+<p>template&lt;class TTI_T,class TTI_U&gt; struct trait { static const value = unspecified; typedef mpl::bool_&lt;true-or-false&gt; type; };</p>
 <p>The metafunction types and return:</p>
 <p>TTI_T = the enclosing type in which to look for our 'name'.</p>
 <p>TTI_U = the type of the inner type named 'name' as an optional parameter.</p>
-<p>returns = 'value' is true if the 'name' type exists within the enclosing type and, if type U is specified, the 'name' type is the same as the type U, otherwise 'value' is false. </p>
+<p>returns = 'value' is true if the 'name' type exists within the enclosing type TTI_T and, if type TTI_U is specified, the 'name' type is the same as the type TTI_U, otherwise 'value' is false. </p>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_MEMBER_TYPE.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_MEMBER_TYPE.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_TRAIT_MEMBER_TYPE.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -6,36 +6,35 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
 <link rel="home" href="index.html" title="Chapter&#160;1.&#160;The Type Traits Introspection Library 1.5">
 <link rel="up" href="header/boost/tti/member_type_hpp.html" title="Header &lt;boost/tti/member_type.hpp&gt;">
-<link rel="prev" href="header/boost/tti/member_type_hpp.html" title="Header &lt;boost/tti/member_type.hpp&gt;">
+<link rel="prev" href="boost/tti/valid_member_type.html" title="Struct template valid_member_type">
 <link rel="next" href="BOOST_TTI_MEMBER_TYPE.html" title="Macro BOOST_TTI_MEMBER_TYPE">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="header/boost/tti/member_type_hpp.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="header/boost/tti/member_type_hpp.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="BOOST_TTI_MEMBER_TYPE.html"><img src="images/next.png" alt="Next"></a>
+<a accesskey="p" href="boost/tti/valid_member_type.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="header/boost/tti/member_type_hpp.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="BOOST_TTI_MEMBER_TYPE.html"><img src="images/next.png" alt="Next"></a>
 </div>
 <div class="refentry">
 <a name="BOOST_TTI_TRAIT_MEMBER_TYPE"></a><div class="titlepage"></div>
 <div class="refnamediv">
 <h2><span class="refentrytitle">Macro BOOST_TTI_TRAIT_MEMBER_TYPE</span></h2>
-<p>BOOST_TTI_TRAIT_MEMBER_TYPE &#8212; Expands to a metafunction whose typedef 'type' is either the named type or an unspecified type. </p>
+<p>BOOST_TTI_TRAIT_MEMBER_TYPE &#8212; Expands to a metafunction whose typedef 'type' is either the named type or an unspecified marker type. </p>
 </div>
 <h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
 <div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="header/boost/tti/member_type_hpp.html" title="Header &lt;boost/tti/member_type.hpp&gt;">boost/tti/member_type.hpp</a>&gt;
 
 </span>BOOST_TTI_TRAIT_MEMBER_TYPE(trait, name)</pre></div>
 <div class="refsect1">
-<a name="id967904"></a><h2>Description</h2>
+<a name="id937504"></a><h2>Description</h2>
 <p>trait = the name of the metafunction within the tti namespace.</p>
 <p>name = the name of the inner type.</p>
-<p>returns = a metafunction called "boost::tti::trait" where 'trait' is the macro parameter.</p>
+<p>generates a metafunction called "trait" where 'trait' is the macro parameter.</p>
+<p>template&lt;class TTI_T&gt; struct trait { typedef unspecified type; };</p>
 <p>The metafunction types and return:</p>
-<p>TTI_T = the enclosing type.<br>
-</p>
-<p>returns = 'type' is the inner type of 'name' if the inner type exists within the enclosing type, else 'type' is an unspecified type.<br>
-</p>
-<p>The purpose of this macro is to encapsulate the 'name' type as the typedef 'type' of a metafunction, but only if it exists within the enclosing type. This allows for a lazy evaluation of inner type existence which can be used by other metafunctions in this library. </p>
+<p>TTI_T = the enclosing type.</p>
+<p>returns = 'type' is the inner type of 'name' if the inner type exists within the enclosing type, else 'type' is an unspecified marker type.</p>
+<p>The purpose of this macro is to encapsulate the 'name' type as the typedef 'type' of a metafunction, but only if it exists within the enclosing type. This allows for an evaluation of inner type existence, without generating a compiler error, which can be used by other metafunctions in this library. </p>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
@@ -44,7 +43,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="header/boost/tti/member_type_hpp.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="header/boost/tti/member_type_hpp.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="BOOST_TTI_MEMBER_TYPE.html"><img src="images/next.png" alt="Next"></a>
+<a accesskey="p" href="boost/tti/valid_member_type.html"><img src="images/prev.png" alt="Prev"></a><a accesskey="u" href="header/boost/tti/member_type_hpp.html"><img src="images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a><a accesskey="n" href="BOOST_TTI_MEMBER_TYPE.html"><img src="images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -25,13 +25,14 @@
 
 </span>BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS(name, ...)</pre></div>
 <div class="refsect1">
-<a name="id971136"></a><h2>Description</h2>
+<a name="id940869"></a><h2>Description</h2>
 <p>name = the name of the inner class template.</p>
 <p>... = variadic macro data which has the class template parameters.</p>
-<p>returns = a metafunction called "boost::tti::has_template_check_params_name" where 'name' is the macro parameter.</p>
+<p>generates a metafunction called "has_template_check_params_name" where 'name' is the macro parameter.</p>
+<p>template&lt;class TTI_T&gt; struct has_template_check_params_name { static const value = unspecified; typedef mpl::bool_&lt;true-or-false&gt; type; };</p>
 <p>The metafunction types and return:</p>
 <p>TTI_T = the enclosing type in which to look for our 'name'.</p>
-<p>returns = 'value' is true if the 'name' class template, with the signature as defined by the '...' variadic macro data, exists within the enclosing type, otherwise 'value' is false. </p>
+<p>returns = 'value' is true if the 'name' class template, with the signature as defined by the '...' variadic macro data, exists within the enclosing TTI_T type, otherwise 'value' is false. </p>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS_GEN.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS_GEN.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS_GEN.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,7 +26,7 @@
 
 </span>BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS_GEN(name)</pre></div>
 <div class="refsect1">
-<a name="id965570"></a><h2>Description</h2>
+<a name="id935422"></a><h2>Description</h2>
 <p>name = the name of the class template.</p>
 <p>returns = the generated macro metafunction name. </p>
 </div>

Modified: trunk/libs/tti/doc/html/BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS.html
==============================================================================
--- trunk/libs/tti/doc/html/BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS.html (original)
+++ trunk/libs/tti/doc/html/BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -26,14 +26,15 @@
 
 </span>BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS(trait, name, ...)</pre></div>
 <div class="refsect1">
-<a name="id971085"></a><h2>Description</h2>
+<a name="id940816"></a><h2>Description</h2>
 <p>trait = the name of the metafunction within the tti namespace.</p>
 <p>name = the name of the inner class template.</p>
 <p>... = variadic macro data which has the class template parameters.</p>
-<p>returns = a metafunction called "boost::tti::trait" where 'trait' is the macro parameter.</p>
+<p>generates a metafunction called "trait" where 'trait' is the macro parameter.</p>
+<p>template&lt;class TTI_T&gt; struct trait { static const value = unspecified; typedef mpl::bool_&lt;true-or-false&gt; type; };</p>
 <p>The metafunction types and return:</p>
 <p>TTI_T = the enclosing type in which to look for our 'name'.</p>
-<p>returns = 'value' is true if the 'name' class template, with the signature as defined by the '...' variadic macro data, exists within the enclosing type, otherwise 'value' is false. </p>
+<p>returns = 'value' is true if the 'name' class template, with the signature as defined by the '...' variadic macro data, exists within the enclosing TTI_T type, otherwise 'value' is false. </p>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/tti/doc/html/boost/tti/mf_has_member_data.html
==============================================================================
--- trunk/libs/tti/doc/html/boost/tti/mf_has_member_data.html (original)
+++ trunk/libs/tti/doc/html/boost/tti/mf_has_member_data.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -24,17 +24,18 @@
 <h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
 <div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../../header/boost/tti/mf/mf_has_member_data_hpp.html" title="Header &lt;boost/tti/mf/mf_has_member_data.hpp&gt;">boost/tti/mf/mf_has_member_data.hpp</a>&gt;
 
-</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> TTI_HasMemberData<span class="special">,</span> <span class="keyword">typename</span> TTI_T<span class="special">,</span> <span class="keyword">typename</span> TTI_R<span class="special">&gt;</span>
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> TTI_HasMemberData<span class="special">,</span> <span class="keyword">typename</span> TTI_T<span class="special">,</span> <span class="keyword">typename</span> TTI_Type<span class="special">&gt;</span>
 <span class="keyword">struct</span> <a class="link" href="mf_has_member_data.html" title="Struct template mf_has_member_data">mf_has_member_data</a> <span class="special">{</span>
 <span class="special">}</span><span class="special">;</span></pre></div>
 <div class="refsect1">
-<a name="id968158"></a><h2>Description</h2>
-<p>This metafunction takes its specific types as nullary metafunctions whose typedef 'type' member is the actual type used.</p>
+<a name="id937759"></a><h2>Description</h2>
+<p>This metafunction takes its specific class types as nullary metafunctions whose typedef 'type' member is the actual type used.</p>
+<p>template&lt;class TTI_HasMemberData,class TTI_T,class TTI_Type&gt; struct <a class="link" href="mf_has_member_data.html" title="Struct template mf_has_member_data">mf_has_member_data</a> { static const value = unspecified; typedef mpl::bool_&lt;true-or-false&gt; type; };</p>
 <p>The metafunction types and return:</p>
-<p>TTI_HasMemberData = a Boost MPL lambda expression using the metafunction generated from the TTI_HAS_MEMBER_DATA ( or TTI_TRAIT_HAS_MEMBER_DATA ) macro.<br>
+<p>TTI_HasMemberData = a Boost MPL lambda expression using the metafunction generated from the BOOST_TTI_HAS_MEMBER_DATA ( or BOOST_TTI_TRAIT_HAS_MEMBER_DATA ) macro.<br>
  The easiest way to generate the lambda expression is to use a Boost MPL placeholder expression of the form 'metafunction&lt;_,_&gt;'. You can also use a metafunction class generated by boost::mpl::quote2.</p>
 <p>TTI_T = the enclosing type as a nullary metafunction.</p>
-<p>TTI_R = the type of the member data as a nullary metafunction.</p>
+<p>TTI_Type = the type of the member data as a nullary metafunction. If the type is not a class type it may be passed as is.</p>
 <p>returns = 'value' is true if the member data exists within the enclosing type, otherwise 'value' is false. </p>
 </div>
 </div>

Modified: trunk/libs/tti/doc/html/boost/tti/mf_has_member_function.html
==============================================================================
--- trunk/libs/tti/doc/html/boost/tti/mf_has_member_function.html (original)
+++ trunk/libs/tti/doc/html/boost/tti/mf_has_member_function.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -30,15 +30,16 @@
 <span class="keyword">struct</span> <a class="link" href="mf_has_member_function.html" title="Struct template mf_has_member_function">mf_has_member_function</a> <span class="special">{</span>
 <span class="special">}</span><span class="special">;</span></pre></div>
 <div class="refsect1">
-<a name="id968506"></a><h2>Description</h2>
-<p>This metafunction takes its specific types, except for the optional parameters, as nullary metafunctions whose typedef 'type' member is the actual type used.</p>
+<a name="id938113"></a><h2>Description</h2>
+<p>This metafunction takes its specific class types, except for the optional parameters, as nullary metafunctions whose typedef 'type' member is the actual type used.</p>
+<p>template&lt;class TTI_HasMemberFunction,class TTI_T,class TTI_R,class TTI_FS = boost::mpl::vector&lt;&gt;,class TTI_TAG = boost::function_types::null_tag&gt; struct <a class="link" href="mf_has_member_function.html" title="Struct template mf_has_member_function">mf_has_member_function</a> { static const value = unspecified; typedef mpl::bool_&lt;true-or-false&gt; type; };</p>
 <p>The metafunction types and return:</p>
-<p>TTI_HasMemberFunction = a Boost MPL lambda expression using the metafunction generated from the TTI_HAS_MEMBER_FUNCTION ( or TTI_TRAIT_HAS_MEMBER_FUNCTION ) macro.<br>
+<p>TTI_HasMemberFunction = a Boost MPL lambda expression using the metafunction generated from the BOOST_TTI_HAS_MEMBER_FUNCTION ( or BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION ) macro.<br>
  The easiest way to generate the lambda expression is to use a Boost MPL placeholder expression of the form 'metafunction&lt;_,_&gt; ( or optionally 'metafunction&lt;_,_,_&gt; or ' 'metafunction&lt;_,_,_,_&gt; )'. You can also use a metafunction class generated by boost::mpl::quote4.</p>
 <p>TTI_T = the enclosing type as a nullary metafunction.</p>
-<p>TTI_R = the return type of the member function as a nullary metafunction.</p>
+<p>TTI_R = the return type of the member function as a nullary metafunction. If the type is not a class type it may be passed as is.</p>
 <p>TTI_FS = an optional parameter which is the parameters of the member function, each as a nullary metafunction, as a boost::mpl forward sequence.<br>
- This parameter defaults to boost::mpl::vector&lt;&gt;.</p>
+ This parameter defaults to boost::mpl::vector&lt;&gt;. Each parameter is a nullary metafunction, but if the type is a non-class type it may be passed as is.</p>
 <p>TTI_TAG = an optional parameter which is a boost::function_types tag to apply to the member function.<br>
  This parameter defaults to boost::function_types::null_tag.</p>
 <p>returns = 'value' is true if the member function exists within the enclosing type, otherwise 'value' is false. </p>

Modified: trunk/libs/tti/doc/html/boost/tti/mf_has_static_member_data.html
==============================================================================
--- trunk/libs/tti/doc/html/boost/tti/mf_has_static_member_data.html (original)
+++ trunk/libs/tti/doc/html/boost/tti/mf_has_static_member_data.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -24,18 +24,19 @@
 <h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
 <div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../../header/boost/tti/mf/mf_has_static_member_data_hpp.html" title="Header &lt;boost/tti/mf/mf_has_static_member_data.hpp&gt;">boost/tti/mf/mf_has_static_member_data.hpp</a>&gt;
 
-</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> TTI_HasStaticMemberData<span class="special">,</span> <span class="keyword">typename</span> TTI_T<span class="special">,</span> <span class="keyword">typename</span> TTI_R<span class="special">&gt;</span>
+</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> TTI_HasStaticMemberData<span class="special">,</span> <span class="keyword">typename</span> TTI_T<span class="special">,</span> <span class="keyword">typename</span> TTI_Type<span class="special">&gt;</span>
 <span class="keyword">struct</span> <a class="link" href="mf_has_static_member_data.html" title="Struct template mf_has_static_member_data">mf_has_static_member_data</a> <span class="special">{</span>
 <span class="special">}</span><span class="special">;</span></pre></div>
 <div class="refsect1">
-<a name="id968720"></a><h2>Description</h2>
-<p>This metafunction takes its specific types as nullary metafunctions whose typedef 'type' member is the actual type used.</p>
+<a name="id938333"></a><h2>Description</h2>
+<p>This metafunction takes its specific class types as nullary metafunctions whose typedef 'type' member is the actual type used.</p>
+<p>template&lt;class TTI_HasStaticMemberData,class TTI_T,class TTI_Type&gt; struct <a class="link" href="mf_has_member_data.html" title="Struct template mf_has_member_data">mf_has_member_data</a> { static const value = unspecified; typedef mpl::bool_&lt;true-or-false&gt; type; };</p>
 <p>The metafunction types and return:</p>
-<p>TTI_HasStaticMemberData = a Boost MPL lambda expression using the metafunction generated from the TTI_HAS_STATIC_MEMBER_DATA ( or TTI_TRAIT_HAS_STATIC_MEMBER_DATA ) macro.<br>
+<p>TTI_HasStaticMemberData = a Boost MPL lambda expression using the metafunction generated from the BOOST_TTI_HAS_STATIC_MEMBER_DATA ( or BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_DATA ) macro.<br>
  The easiest way to generate the lambda expression is to use a Boost MPL placeholder expression of the form 'metafunction&lt;_,_&gt;'. You can also use a metafunction class generated by boost::mpl::quote2.</p>
 <p>TTI_T = the enclosing type as a nullary metafunction.</p>
-<p>TTI_R = the type of the static member data as a nullary metafunction.</p>
-<p>returns = 'value' is true if the member data exists within the enclosing type, otherwise 'value' is false. </p>
+<p>TTI_Type = the type of the static member data as a nullary metafunction. If the type is not a class type it may be passed as is.</p>
+<p>returns = 'value' is true if the static member data exists within the enclosing type, otherwise 'value' is false. </p>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/tti/doc/html/boost/tti/mf_has_template.html
==============================================================================
--- trunk/libs/tti/doc/html/boost/tti/mf_has_template.html (original)
+++ trunk/libs/tti/doc/html/boost/tti/mf_has_template.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -28,13 +28,15 @@
 <span class="keyword">struct</span> <a class="link" href="mf_has_template.html" title="Struct template mf_has_template">mf_has_template</a> <span class="special">{</span>
 <span class="special">}</span><span class="special">;</span></pre></div>
 <div class="refsect1">
-<a name="id970116"></a><h2>Description</h2>
+<a name="id938884"></a><h2>Description</h2>
 <p>This metafunction takes its enclosing type as nullary metafunctions whose typedef 'type' member is the actual type used.</p>
+<p>template&lt;class TTI_HasTemplate,class TTI_T&gt; struct <a class="link" href="mf_has_template.html" title="Struct template mf_has_template">mf_has_template</a> { static const value = unspecified; typedef mpl::bool_&lt;true-or-false&gt; type; };</p>
 <p>The metafunction types and return:</p>
-<p>TTI_HasTemplate = a Boost MPL lambda expression using the metafunction generated from the TTI_HAS_TEMPLATE ( TTI_TRAIT_HAS_TEMPLATE ) macro.<br>
+<p>TTI_HasTemplate = a Boost MPL lambda expression using the metafunction generated from the BOOST_TTI_HAS_TEMPLATE ( BOOST_TTI_TRAIT_HAS_TEMPLATE ) macro.<br>
  The easiest way to generate the lambda expression is to use a Boost MPL placeholder expression of the form 'metafunction&lt;_&gt;'. You can also use a metafunction class generated by boost::mpl::quote1.</p>
 <p>TTI_T = the enclosing type as a nullary metafunction.</p>
-<p>returns = 'value' is true if the template exists within the enclosing type, otherwise 'value' is false. </p>
+<p>returns = 'value' is true if the template exists within the enclosing type, otherwise 'value' is false.</p>
+<p>The template being introspected must have all 'class' ( or 'typename' ) parameters types. </p>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/tti/doc/html/boost/tti/mf_has_type.html
==============================================================================
--- trunk/libs/tti/doc/html/boost/tti/mf_has_type.html (original)
+++ trunk/libs/tti/doc/html/boost/tti/mf_has_type.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -29,13 +29,14 @@
 <span class="keyword">struct</span> <a class="link" href="mf_has_type.html" title="Struct template mf_has_type">mf_has_type</a> <span class="special">{</span>
 <span class="special">}</span><span class="special">;</span></pre></div>
 <div class="refsect1">
-<a name="id970597"></a><h2>Description</h2>
-<p>This metafunction takes its specific types as nullary metafunctions whose typedef 'type' member is the actual type used.</p>
+<a name="id939385"></a><h2>Description</h2>
+<p>This metafunction takes its specific class types as nullary metafunctions whose typedef 'type' member is the actual type used.</p>
+<p>template&lt;class TTI_HasType,class TTI_T,class TTI_U = boost::mpl::identity&lt;boost::tti::detail::notype&gt; &gt; struct <a class="link" href="mf_has_type.html" title="Struct template mf_has_type">mf_has_type</a> { static const value = unspecified; typedef mpl::bool_&lt;true-or-false&gt; type; };</p>
 <p>The metafunction types and return:</p>
-<p>TTI_HasType = a Boost MPL lambda expression using the metafunction generated from the TTI_HAS_TYPE ( or TTI_TRAIT_HAS_TYPE ) macro.<br>
+<p>TTI_HasType = a Boost MPL lambda expression using the metafunction generated from the BOOST_TTI_HAS_TYPE ( or BOOST_TTI_TRAIT_HAS_TYPE ) macro.<br>
  The easiest way to generate the lambda expression is to use a Boost MPL placeholder expression of the form 'metafunction&lt;_&gt;' ( or optionally 'metafunction&lt;_,_&gt;' ). You can also use a metafunction class generated by boost::mpl::quote2.</p>
 <p>TTI_T = the enclosing type as a nullary metafunction.</p>
-<p>TTI_U = the type of the inner type as a nullary metafunction, as an optional parameter.</p>
+<p>TTI_U = the type of the inner type as a nullary metafunction. If the type is not a class type it may be passed as is. This is an optional parameter. It defaults to an internal marker type called boost::tti::detail::notype.</p>
 <p>returns = 'value' is true if the type exists within the enclosing type and, if type U is specified, the type is the same as the type U, otherwise 'value' is false. </p>
 </div>
 </div>

Modified: trunk/libs/tti/doc/html/boost/tti/mf_member_type.html
==============================================================================
--- trunk/libs/tti/doc/html/boost/tti/mf_member_type.html (original)
+++ trunk/libs/tti/doc/html/boost/tti/mf_member_type.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -28,15 +28,16 @@
 <span class="keyword">struct</span> <a class="link" href="mf_member_type.html" title="Struct template mf_member_type">mf_member_type</a> <span class="special">{</span>
 <span class="special">}</span><span class="special">;</span></pre></div>
 <div class="refsect1">
-<a name="id971011"></a><h2>Description</h2>
+<a name="id940734"></a><h2>Description</h2>
 <p>This metafunction takes its enclosing type as a nullary metafunction whose typedef 'type' member is the actual type used.</p>
+<p>template&lt;class TTI_MemberType,class TTI_T&gt; struct <a class="link" href="mf_member_type.html" title="Struct template mf_member_type">mf_member_type</a> { typedef unspecified type; };</p>
 <p>The metafunction types and return:</p>
-<p>TTI_MemberType = a Boost MPL lambda expression using the metafunction generated from the TTI_MEMBER_TYPE ( or TTI_TRAIT_MEMBER_TYPE ) macro.<br>
+<p>TTI_MemberType = a Boost MPL lambda expression using the metafunction generated from the BOOST_TTI_MEMBER_TYPE ( or BOOST_TTI_TRAIT_MEMBER_TYPE ) macro.<br>
  The easiest way to generate the lambda expression is to use a Boost MPL placeholder expression of the form 'metafunction&lt;_&gt;'. You can also use a metafunction class generated by boost::mpl::quote1.</p>
 <p>TTI_T = the enclosing type as a nullary metafunction.</p>
-<p>returns = 'type' is the inner type of the 'name' in TTI_MEMBER_TYPE ( or TTI_TRAIT_MEMBER_TYPE ) if the inner type exists within the enclosing type, else 'type' is an unspecified type.</p>
-<p>The purpose of this metafunction is to encapsulate the 'name' type in TTI_MEMBER_TYPE ( or TTI_TRAIT_MEMBER_TYPE ) as the typedef 'type' of a metafunction, but only if it exists within the enclosing type. This allows for a lazy evaluation of inner type existence which can be used by other metafunctions in this library.</p>
-<p>Furthermore this metafunction allows the enclosing type to be return type from either the metafunction generated from TTI_MEMBER_TYPE ( or TTI_TRAIT_MEMBER_TYPE ) or from this metafunction itself. </p>
+<p>returns = 'type' is the inner type of the 'name' in BOOST_TTI_MEMBER_TYPE ( or BOOST_TTI_TRAIT_MEMBER_TYPE ) if the inner type exists within the enclosing type, else 'type' is an unspecified type.</p>
+<p>The purpose of this metafunction is to encapsulate the 'name' type in BOOST_TTI_MEMBER_TYPE ( or BOOST_TTI_TRAIT_MEMBER_TYPE ) as the typedef 'type' of a metafunction, but only if it exists within the enclosing type. This allows for a evaluation of inner type existence, without generating a compiler error, which can be used by other metafunctions in this library.</p>
+<p>Furthermore this metafunction allows the enclosing type to be return type from either the metafunction generated from BOOST_TTI_MEMBER_TYPE ( or BOOST_TTI_TRAIT_MEMBER_TYPE ) or from this metafunction itself. </p>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/tti/doc/html/boost/tti/mf_valid_member_type.html
==============================================================================
--- trunk/libs/tti/doc/html/boost/tti/mf_valid_member_type.html (original)
+++ trunk/libs/tti/doc/html/boost/tti/mf_valid_member_type.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -6,20 +6,20 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;The Type Traits Introspection Library 1.5">
 <link rel="up" href="../../header/boost/tti/mf/mf_member_type_hpp.html" title="Header &lt;boost/tti/mf/mf_member_type.hpp&gt;">
-<link rel="prev" href="valid_member_type.html" title="Struct template valid_member_type">
+<link rel="prev" href="../../header/boost/tti/mf/mf_member_type_hpp.html" title="Header &lt;boost/tti/mf/mf_member_type.hpp&gt;">
 <link rel="next" href="mf_member_type.html" title="Struct template mf_member_type">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="valid_member_type.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/tti/mf/mf_member_type_hpp.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="mf_member_type.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="../../header/boost/tti/mf/mf_member_type_hpp.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/tti/mf/mf_member_type_hpp.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="mf_member_type.html"><img src="../../images/next.png" alt="Next"></a>
 </div>
 <div class="refentry">
 <a name="boost.tti.mf_valid_member_type"></a><div class="titlepage"></div>
 <div class="refnamediv">
 <h2><span class="refentrytitle">Struct template mf_valid_member_type</span></h2>
-<p>boost::tti::mf_valid_member_type &#8212; A metafunction which checks whether the member 'type' returned from invoking the macro metafunction generated by TTI_MEMBER_TYPE ( TTI_TRAIT_MEMBER_TYPE ) or from invoking <a class="link" href="mf_member_type.html" title="Struct template mf_member_type">boost::tti::mf_member_type</a> is a valid type. </p>
+<p>boost::tti::mf_valid_member_type &#8212; A metafunction which checks whether the member 'type' returned from invoking the macro metafunction generated by BOOST_TTI_MEMBER_TYPE ( BOOST_TTI_TRAIT_MEMBER_TYPE ) or from invoking <a class="link" href="mf_member_type.html" title="Struct template mf_member_type">boost::tti::mf_member_type</a> is a valid type. </p>
 </div>
 <h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
 <div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../../header/boost/tti/mf/mf_member_type_hpp.html" title="Header &lt;boost/tti/mf/mf_member_type.hpp&gt;">boost/tti/mf/mf_member_type.hpp</a>&gt;
@@ -28,10 +28,11 @@
 <span class="keyword">struct</span> <a class="link" href="mf_valid_member_type.html" title="Struct template mf_valid_member_type">mf_valid_member_type</a> <span class="special">{</span>
 <span class="special">}</span><span class="special">;</span></pre></div>
 <div class="refsect1">
-<a name="id970921"></a><h2>Description</h2>
+<a name="id940636"></a><h2>Description</h2>
+<p>template&lt;class TTI_T&gt; struct <a class="link" href="mf_valid_member_type.html" title="Struct template mf_valid_member_type">mf_valid_member_type</a> { static const value = unspecified; typedef mpl::bool_&lt;true-or-false&gt; type; };</p>
 <p>The metafunction types and return:</p>
-<p>TTI_T = the nullary metafunction from invoking the macro metafunction generated by TTI_MEMBER_TYPE ( TTI_TRAIT_MEMBER_TYPE ) or from invoking <a class="link" href="mf_member_type.html" title="Struct template mf_member_type">boost::tti::mf_member_type</a>.</p>
-<p>returns = 'value' is true if the type is valid, otherwise 'value' is false. </p>
+<p>TTI_T = the nullary metafunction from invoking the macro metafunction generated by BOOST_TTI_MEMBER_TYPE ( BOOST_TTI_TRAIT_MEMBER_TYPE ) or from invoking <a class="link" href="mf_member_type.html" title="Struct template mf_member_type">boost::tti::mf_member_type</a>.</p>
+<p>returns = 'value' is true if the type is valid, otherwise 'value' is false. Validity means that the type being tested is not equal to an unspecified marker type. </p>
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
@@ -40,7 +41,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="valid_member_type.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/tti/mf/mf_member_type_hpp.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="mf_member_type.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="../../header/boost/tti/mf/mf_member_type_hpp.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/tti/mf/mf_member_type_hpp.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="mf_member_type.html"><img src="../../images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: trunk/libs/tti/doc/html/boost/tti/valid_member_type.html
==============================================================================
--- trunk/libs/tti/doc/html/boost/tti/valid_member_type.html (original)
+++ trunk/libs/tti/doc/html/boost/tti/valid_member_type.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -5,32 +5,33 @@
 <link rel="stylesheet" href="../../boostbook.css" type="text/css">
 <meta name="generator" content="DocBook XSL Stylesheets V1.76.0">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;The Type Traits Introspection Library 1.5">
-<link rel="up" href="../../header/boost/tti/mf/mf_member_type_hpp.html" title="Header &lt;boost/tti/mf/mf_member_type.hpp&gt;">
-<link rel="prev" href="../../header/boost/tti/mf/mf_member_type_hpp.html" title="Header &lt;boost/tti/mf/mf_member_type.hpp&gt;">
-<link rel="next" href="mf_valid_member_type.html" title="Struct template mf_valid_member_type">
+<link rel="up" href="../../header/boost/tti/member_type_hpp.html" title="Header &lt;boost/tti/member_type.hpp&gt;">
+<link rel="prev" href="../../header/boost/tti/member_type_hpp.html" title="Header &lt;boost/tti/member_type.hpp&gt;">
+<link rel="next" href="../../BOOST_TTI_TRAIT_MEMBER_TYPE.html" title="Macro BOOST_TTI_TRAIT_MEMBER_TYPE">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../../header/boost/tti/mf/mf_member_type_hpp.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/tti/mf/mf_member_type_hpp.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="mf_valid_member_type.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="../../header/boost/tti/member_type_hpp.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/tti/member_type_hpp.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../../BOOST_TTI_TRAIT_MEMBER_TYPE.html"><img src="../../images/next.png" alt="Next"></a>
 </div>
 <div class="refentry">
 <a name="boost.tti.valid_member_type"></a><div class="titlepage"></div>
 <div class="refnamediv">
 <h2><span class="refentrytitle">Struct template valid_member_type</span></h2>
-<p>boost::tti::valid_member_type &#8212; A metafunction which checks whether the member 'type' returned from invoking the macro metafunction generated by TTI_MEMBER_TYPE ( TTI_TRAIT_MEMBER_TYPE ) or from invoking <a class="link" href="mf_member_type.html" title="Struct template mf_member_type">boost::tti::mf_member_type</a> is a valid type. </p>
+<p>boost::tti::valid_member_type &#8212; A metafunction which checks whether the member 'type' returned from invoking the macro metafunction generated by BOOST_TTI_MEMBER_TYPE ( BOOST_TTI_TRAIT_MEMBER_TYPE ) is a valid type. </p>
 </div>
 <h2 xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv-title">Synopsis</h2>
-<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../../header/boost/tti/mf/mf_member_type_hpp.html" title="Header &lt;boost/tti/mf/mf_member_type.hpp&gt;">boost/tti/mf/mf_member_type.hpp</a>&gt;
+<div xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="refsynopsisdiv"><pre class="synopsis"><span class="comment">// In header: &lt;<a class="link" href="../../header/boost/tti/member_type_hpp.html" title="Header &lt;boost/tti/member_type.hpp&gt;">boost/tti/member_type.hpp</a>&gt;
 
 </span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> TTI_T<span class="special">&gt;</span>
 <span class="keyword">struct</span> <a class="link" href="valid_member_type.html" title="Struct template valid_member_type">valid_member_type</a> <span class="special">{</span>
 <span class="special">}</span><span class="special">;</span></pre></div>
 <div class="refsect1">
-<a name="id970836"></a><h2>Description</h2>
+<a name="id937457"></a><h2>Description</h2>
+<p>template&lt;class TTI_T&gt; struct <a class="link" href="valid_member_type.html" title="Struct template valid_member_type">valid_member_type</a> { static const value = unspecified; typedef mpl::bool_&lt;true-or-false&gt; type; };</p>
 <p>The metafunction types and return:</p>
-<p>TTI_T = returned inner 'type' from invoking the macro metafunction generated by TTI_MEMBER_TYPE ( TTI_TRAIT_MEMBER_TYPE ) or from invoking <a class="link" href="mf_member_type.html" title="Struct template mf_member_type">boost::tti::mf_member_type</a>.</p>
+<p>TTI_T = returned inner 'type' from invoking the macro metafunction generated by BOOST_TTI_MEMBER_TYPE ( BOOST_TTI_TRAIT_MEMBER_TYPE ).</p>
 <p>returns = 'value' is true if the type is valid, otherwise 'value' is false. </p>
 </div>
 </div>
@@ -40,7 +41,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="../../header/boost/tti/mf/mf_member_type_hpp.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/tti/mf/mf_member_type_hpp.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="mf_valid_member_type.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="../../header/boost/tti/member_type_hpp.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../../header/boost/tti/member_type_hpp.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../../BOOST_TTI_TRAIT_MEMBER_TYPE.html"><img src="../../images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: trunk/libs/tti/doc/html/index.html
==============================================================================
--- trunk/libs/tti/doc/html/index.html (original)
+++ trunk/libs/tti/doc/html/index.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -224,7 +224,7 @@
 </div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: August 27, 2011 at 17:04:22 GMT</small></p></td>
+<td align="left"><p><small>Last revised: August 28, 2011 at 23:54:24 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: trunk/libs/tti/doc/html/index/s16.html
==============================================================================
--- trunk/libs/tti/doc/html/index/s16.html (original)
+++ trunk/libs/tti/doc/html/index/s16.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -17,7 +17,7 @@
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="id958271"></a>Index</h2></div></div></div>
+<a name="id925471"></a>Index</h2></div></div></div>
 <p><a class="link" href="s16.html#idx_id_0">B</a> <a class="link" href="s16.html#idx_id_1">G</a> <a class="link" href="s16.html#idx_id_2">H</a> <a class="link" href="s16.html#idx_id_3">I</a> <a class="link" href="s16.html#idx_id_4">M</a> <a class="link" href="s16.html#idx_id_5">N</a> <a class="link" href="s16.html#idx_id_6">S</a> <a class="link" href="s16.html#idx_id_7">T</a> <a class="link" href="s16.html#idx_id_8">U</a> <a class="link" href="s16.html#idx_id_9">V</a></p>
 <div class="variablelist"><dl>
 <dt>
@@ -31,6 +31,7 @@
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_history.html" title="History"><span class="index-entry-level-1">History</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_MEMBER_DATA.html" title="Macro BOOST_TTI_HAS_MEMBER_DATA"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_MEMBER_DATA</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_MEMBER_DATA_GEN.html" title="Macro BOOST_TTI_HAS_MEMBER_DATA_GEN"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_MEMBER_DATA_GEN</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_member_data.html" title="Struct template mf_has_member_data"><span class="index-entry-level-1">Struct template mf_has_member_data</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_detail.html#the_type_traits_introspection_library.tti_detail.tbmacros" title="Table&#160;1.1.&#160;TTI Macro Metafunctions"><span class="index-entry-level-1">TTI Macro Metafunctions</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_metafunctions.html#the_type_traits_introspection_library.tti_metafunctions.tbmetafunctions" title="Table&#160;1.4.&#160;TTI Nullary Type Metafunctions"><span class="index-entry-level-1">TTI Nullary Type Metafunctions</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_usingMM.html" title="Using the Macro Metafunctions"><span class="index-entry-level-1">Using the Macro Metafunctions</span></a></p></li>
@@ -53,6 +54,7 @@
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_MEMBER_FUNCTION_GEN.html" title="Macro BOOST_TTI_HAS_MEMBER_FUNCTION_GEN"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_MEMBER_FUNCTION_GEN</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_functionality.html#the_type_traits_introspection_library.tti_functionality.tti_functionality_nm_gen" title="Macro metafunction name generation considerations"><span class="index-entry-level-1">Macro metafunction name generation considerations</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_nested_type.html#the_type_traits_introspection_library.tti_nested_type.tti_func_sig" title="Nested Types and Function Signatures"><span class="index-entry-level-1">Nested Types and Function Signatures</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_member_function.html" title="Struct template mf_has_member_function"><span class="index-entry-level-1">Struct template mf_has_member_function</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_detail.html#the_type_traits_introspection_library.tti_detail.tbmacros" title="Table&#160;1.1.&#160;TTI Macro Metafunctions"><span class="index-entry-level-1">TTI Macro Metafunctions</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_metafunctions.html#the_type_traits_introspection_library.tti_metafunctions.tbmetafunctions" title="Table&#160;1.4.&#160;TTI Nullary Type Metafunctions"><span class="index-entry-level-1">TTI Nullary Type Metafunctions</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_usingMM.html" title="Using the Macro Metafunctions"><span class="index-entry-level-1">Using the Macro Metafunctions</span></a></p></li>
@@ -93,6 +95,7 @@
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_STATIC_MEMBER_DATA.html" title="Macro BOOST_TTI_HAS_STATIC_MEMBER_DATA"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_STATIC_MEMBER_DATA</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_STATIC_MEMBER_DATA_GEN.html" title="Macro BOOST_TTI_HAS_STATIC_MEMBER_DATA_GEN"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_STATIC_MEMBER_DATA_GEN</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_nested_type.html" title="Nested Types"><span class="index-entry-level-1">Nested Types</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_static_member_data.html" title="Struct template mf_has_static_member_data"><span class="index-entry-level-1">Struct template mf_has_static_member_data</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_detail.html#the_type_traits_introspection_library.tti_detail.tbmacros" title="Table&#160;1.1.&#160;TTI Macro Metafunctions"><span class="index-entry-level-1">TTI Macro Metafunctions</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_metafunctions.html#the_type_traits_introspection_library.tti_metafunctions.tbmetafunctions" title="Table&#160;1.4.&#160;TTI Nullary Type Metafunctions"><span class="index-entry-level-1">TTI Nullary Type Metafunctions</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_usingMM.html" title="Using the Macro Metafunctions"><span class="index-entry-level-1">Using the Macro Metafunctions</span></a></p></li>
@@ -114,6 +117,7 @@
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_GEN.html" title="Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_GEN"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_GEN</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_nested_type.html#the_type_traits_introspection_library.tti_nested_type.tti_func_sig" title="Nested Types and Function Signatures"><span class="index-entry-level-1">Nested Types and Function Signatures</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_static_member_fu_id401941.html" title="Struct template mf_has_static_member_function"><span class="index-entry-level-1">Struct template mf_has_static_member_function</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_detail.html#the_type_traits_introspection_library.tti_detail.tbmacros" title="Table&#160;1.1.&#160;TTI Macro Metafunctions"><span class="index-entry-level-1">TTI Macro Metafunctions</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_metafunctions.html#the_type_traits_introspection_library.tti_metafunctions.tbmetafunctions" title="Table&#160;1.4.&#160;TTI Nullary Type Metafunctions"><span class="index-entry-level-1">TTI Nullary Type Metafunctions</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_usingMM.html" title="Using the Macro Metafunctions"><span class="index-entry-level-1">Using the Macro Metafunctions</span></a></p></li>
@@ -153,6 +157,7 @@
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_func_templates.html" title="Introspecting Function Templates"><span class="index-entry-level-1">Introspecting Function Templates</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_TEMPLATE.html" title="Macro BOOST_TTI_HAS_TEMPLATE"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_TEMPLATE</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_TEMPLATE_GEN.html" title="Macro BOOST_TTI_HAS_TEMPLATE_GEN"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_TEMPLATE_GEN</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_template.html" title="Struct template mf_has_template"><span class="index-entry-level-1">Struct template mf_has_template</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_detail.html#the_type_traits_introspection_library.tti_detail.tbmacros" title="Table&#160;1.1.&#160;TTI Macro Metafunctions"><span class="index-entry-level-1">TTI Macro Metafunctions</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_metafunctions.html#the_type_traits_introspection_library.tti_metafunctions.tbmetafunctions" title="Table&#160;1.4.&#160;TTI Nullary Type Metafunctions"><span class="index-entry-level-1">TTI Nullary Type Metafunctions</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_usingMM.html" title="Using the Macro Metafunctions"><span class="index-entry-level-1">Using the Macro Metafunctions</span></a></p></li>
@@ -166,6 +171,7 @@
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_func_templates.html" title="Introspecting Function Templates"><span class="index-entry-level-1">Introspecting Function Templates</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS_GEN.html" title="Macro BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS_GEN"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS_GEN</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_template_check_p_id402055.html" title="Struct template mf_has_template_check_params"><span class="index-entry-level-1">Struct template mf_has_template_check_params</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_detail.html#the_type_traits_introspection_library.tti_detail.tbmacros" title="Table&#160;1.1.&#160;TTI Macro Metafunctions"><span class="index-entry-level-1">TTI Macro Metafunctions</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_metafunctions.html#the_type_traits_introspection_library.tti_metafunctions.tbmetafunctions" title="Table&#160;1.4.&#160;TTI Nullary Type Metafunctions"><span class="index-entry-level-1">TTI Nullary Type Metafunctions</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_usingMM.html" title="Using the Macro Metafunctions"><span class="index-entry-level-1">Using the Macro Metafunctions</span></a></p></li>
@@ -196,6 +202,7 @@
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_TYPE_GEN.html" title="Macro BOOST_TTI_HAS_TYPE_GEN"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_TYPE_GEN</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_functionality.html#the_type_traits_introspection_library.tti_functionality.tti_functionality_nm_gen" title="Macro metafunction name generation considerations"><span class="index-entry-level-1">Macro metafunction name generation considerations</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_nested_type.html" title="Nested Types"><span class="index-entry-level-1">Nested Types</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_type.html" title="Struct template mf_has_type"><span class="index-entry-level-1">Struct template mf_has_type</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_detail.html#the_type_traits_introspection_library.tti_detail.tbmacros" title="Table&#160;1.1.&#160;TTI Macro Metafunctions"><span class="index-entry-level-1">TTI Macro Metafunctions</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_metafunctions.html#the_type_traits_introspection_library.tti_metafunctions.tbmetafunctions" title="Table&#160;1.4.&#160;TTI Nullary Type Metafunctions"><span class="index-entry-level-1">TTI Nullary Type Metafunctions</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_usingMM.html" title="Using the Macro Metafunctions"><span class="index-entry-level-1">Using the Macro Metafunctions</span></a></p></li>
@@ -221,7 +228,11 @@
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_nested_type.html" title="Nested Types"><span class="index-entry-level-1">Nested Types</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_nested_type.html#the_type_traits_introspection_library.tti_nested_type.tti_func_sig" title="Nested Types and Function Signatures"><span class="index-entry-level-1">Nested Types and Function Signatures</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_metafunctions.html" title="Nullary Type Metafunctions"><span class="index-entry-level-1">Nullary Type Metafunctions</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_member_type.html" title="Struct template mf_member_type"><span class="index-entry-level-1">Struct template mf_member_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_valid_member_type.html" title="Struct template mf_valid_member_type"><span class="index-entry-level-1">Struct template mf_valid_member_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/valid_member_type.html" title="Struct template valid_member_type"><span class="index-entry-level-1">Struct template valid_member_type</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_nested_type.html#the_type_traits_introspection_library.tti_nested_type.tbmacronested" title="Table&#160;1.2.&#160;TTI Nested Type Macro Metafunction"><span class="index-entry-level-1">TTI Nested Type Macro Metafunction</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_nested_type.html#the_type_traits_introspection_library.tti_nested_type.existtbmacronested" title="Table&#160;1.3.&#160;TTI Nested Type Macro Metafunction Existence"><span class="index-entry-level-1">TTI Nested Type Macro Metafunction Existence</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_metafunctions.html#the_type_traits_introspection_library.tti_metafunctions.tbmetanested" title="Table&#160;1.5.&#160;TTI Nested Type Nullary Type Metafunction"><span class="index-entry-level-1">TTI Nested Type Nullary Type Metafunction</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_usingMM.html" title="Using the Macro Metafunctions"><span class="index-entry-level-1">Using the Macro Metafunctions</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_usingNTM.html" title="Using the Nullary Type Metafunctions"><span class="index-entry-level-1">Using the Nullary Type Metafunctions</span></a></p></li>
@@ -248,6 +259,7 @@
 <div class="index"><ul class="index" type="none" compact>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../header/boost/tti/has_member_data_hpp.html" title="Header &lt;boost/tti/has_member_data.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/tti/has_member_data.hpp &gt;</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_MEMBER_DATA.html" title="Macro BOOST_TTI_TRAIT_HAS_MEMBER_DATA"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_HAS_MEMBER_DATA</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_member_data.html" title="Struct template mf_has_member_data"><span class="index-entry-level-1">Struct template mf_has_member_data</span></a></p></li>
 </ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
@@ -255,6 +267,7 @@
 <div class="index"><ul class="index" type="none" compact>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../header/boost/tti/has_member_function_hpp.html" title="Header &lt;boost/tti/has_member_function.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/tti/has_member_function.hpp &gt;</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_member_function.html" title="Struct template mf_has_member_function"><span class="index-entry-level-1">Struct template mf_has_member_function</span></a></p></li>
 </ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
@@ -269,6 +282,7 @@
 <div class="index"><ul class="index" type="none" compact>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../header/boost/tti/has_static_member_data_hpp.html" title="Header &lt;boost/tti/has_static_member_data.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/tti/has_static_member_data.hpp &gt;</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_DATA.html" title="Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_DATA"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_DATA</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_static_member_data.html" title="Struct template mf_has_static_member_data"><span class="index-entry-level-1">Struct template mf_has_static_member_data</span></a></p></li>
 </ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
@@ -276,6 +290,7 @@
 <div class="index"><ul class="index" type="none" compact>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../header/boost/tti/has_static_member_function_hpp.html" title="Header &lt;boost/tti/has_static_member_function.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/tti/has_static_member_function.hpp &gt;</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_static_member_fu_id401941.html" title="Struct template mf_has_static_member_function"><span class="index-entry-level-1">Struct template mf_has_static_member_function</span></a></p></li>
 </ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
@@ -290,6 +305,7 @@
 <div class="index"><ul class="index" type="none" compact>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../header/boost/tti/has_template_hpp.html" title="Header &lt;boost/tti/has_template.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/tti/has_template.hpp &gt;</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_TEMPLATE.html" title="Macro BOOST_TTI_TRAIT_HAS_TEMPLATE"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_HAS_TEMPLATE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_template.html" title="Struct template mf_has_template"><span class="index-entry-level-1">Struct template mf_has_template</span></a></p></li>
 </ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
@@ -297,6 +313,7 @@
 <div class="index"><ul class="index" type="none" compact>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../header/boost/tti/has_template_check_params_hpp.html" title="Header &lt;boost/tti/has_template_check_params.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/tti/has_template_check_params.hpp &gt;</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_template_check_p_id402055.html" title="Struct template mf_has_template_check_params"><span class="index-entry-level-1">Struct template mf_has_template_check_params</span></a></p></li>
 </ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
@@ -305,6 +322,7 @@
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_functionality.html" title="General Functionality"><span class="index-entry-level-1">General Functionality</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../header/boost/tti/has_type_hpp.html" title="Header &lt;boost/tti/has_type.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/tti/has_type.hpp &gt;</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_TYPE.html" title="Macro BOOST_TTI_TRAIT_HAS_TYPE"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_HAS_TYPE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_type.html" title="Struct template mf_has_type"><span class="index-entry-level-1">Struct template mf_has_type</span></a></p></li>
 </ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
@@ -312,6 +330,9 @@
 <div class="index"><ul class="index" type="none" compact>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../header/boost/tti/member_type_hpp.html" title="Header &lt;boost/tti/member_type.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/tti/member_type.hpp &gt;</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_MEMBER_TYPE.html" title="Macro BOOST_TTI_TRAIT_MEMBER_TYPE"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_MEMBER_TYPE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_member_type.html" title="Struct template mf_member_type"><span class="index-entry-level-1">Struct template mf_member_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_valid_member_type.html" title="Struct template mf_valid_member_type"><span class="index-entry-level-1">Struct template mf_valid_member_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/valid_member_type.html" title="Struct template valid_member_type"><span class="index-entry-level-1">Struct template valid_member_type</span></a></p></li>
 </ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
@@ -320,6 +341,7 @@
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../header/boost/tti/vm_has_template_check_params_hpp.html" title="Header &lt;boost/tti/vm_has_template_check_params.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/tti/vm_has_template_check_params.hpp &gt;</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">Macro BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS_GEN.html" title="Macro BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS_GEN"><span class="index-entry-level-1">Macro BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS_GEN</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_template_check_p_id402055.html" title="Struct template mf_has_template_check_params"><span class="index-entry-level-1">Struct template mf_has_template_check_params</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_detail.html#the_type_traits_introspection_library.tti_detail.tbmacros" title="Table&#160;1.1.&#160;TTI Macro Metafunctions"><span class="index-entry-level-1">TTI Macro Metafunctions</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_metafunctions.html#the_type_traits_introspection_library.tti_metafunctions.tbmetafunctions" title="Table&#160;1.4.&#160;TTI Nullary Type Metafunctions"><span class="index-entry-level-1">TTI Nullary Type Metafunctions</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_usingMM.html" title="Using the Macro Metafunctions"><span class="index-entry-level-1">Using the Macro Metafunctions</span></a></p></li>
@@ -338,6 +360,7 @@
 <div class="index"><ul class="index" type="none" compact>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../header/boost/tti/vm_has_template_check_params_hpp.html" title="Header &lt;boost/tti/vm_has_template_check_params.hpp&gt;"><span class="index-entry-level-1">Header &lt; boost/tti/vm_has_template_check_params.hpp &gt;</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">Macro BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_template_check_p_id402055.html" title="Struct template mf_has_template_check_params"><span class="index-entry-level-1">Struct template mf_has_template_check_params</span></a></p></li>
 </ul></div>
 </li>
 </ul></div></dd>
@@ -357,6 +380,37 @@
 </dt>
 <dd><div class="index"><ul class="index" type="none" compact>
 <li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">has_member_data_name</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_MEMBER_DATA.html" title="Macro BOOST_TTI_HAS_MEMBER_DATA"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_MEMBER_DATA</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">has_member_function_name</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_HAS_MEMBER_FUNCTION"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_MEMBER_FUNCTION</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">has_member_function_with_sig_name</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_MEMBER_FUNCTION_WITH_SIG.html" title="Macro BOOST_TTI_HAS_MEMBER_FUNCTION_WITH_SIG"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_MEMBER_FUNCTION_WITH_SIG</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">has_static_member_function_with_sig_name</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG.html" title="Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">has_template_check_params_name</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">Macro BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">has_template_name</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_TEMPLATE.html" title="Macro BOOST_TTI_HAS_TEMPLATE"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_TEMPLATE</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">has_type_name</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_TYPE.html" title="Macro BOOST_TTI_HAS_TYPE"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_TYPE</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Header &lt; boost/tti/gen/has_member_data_gen.hpp &gt;</span></p>
 <div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../reference.html#header.boost.tti.gen.has_member_data_gen_hpp" title="Header &lt;boost/tti/gen/has_member_data_gen.hpp&gt;"><span class="index-entry-level-1">BOOST_TTI_HAS_MEMBER_DATA_GEN</span></a></p></li></ul></div>
 </li>
@@ -516,7 +570,11 @@
 <dd><div class="index"><ul class="index" type="none" compact>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_HAS_MEMBER_DATA</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_MEMBER_DATA.html" title="Macro BOOST_TTI_HAS_MEMBER_DATA"><span class="index-entry-level-1">BOOST_TTI_HAS_MEMBER_DATA</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_MEMBER_DATA.html" title="Macro BOOST_TTI_HAS_MEMBER_DATA"><span class="index-entry-level-1">BOOST_TTI_HAS_MEMBER_DATA</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_MEMBER_DATA.html" title="Macro BOOST_TTI_HAS_MEMBER_DATA"><span class="index-entry-level-1">has_member_data_name</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_MEMBER_DATA.html" title="Macro BOOST_TTI_HAS_MEMBER_DATA"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_HAS_MEMBER_DATA_GEN</span></p>
@@ -527,7 +585,11 @@
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_HAS_MEMBER_FUNCTION</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_HAS_MEMBER_FUNCTION"><span class="index-entry-level-1">BOOST_TTI_HAS_MEMBER_FUNCTION</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_HAS_MEMBER_FUNCTION"><span class="index-entry-level-1">BOOST_TTI_HAS_MEMBER_FUNCTION</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_HAS_MEMBER_FUNCTION"><span class="index-entry-level-1">has_member_function_name</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_HAS_MEMBER_FUNCTION"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_HAS_MEMBER_FUNCTION_GEN</span></p>
@@ -538,7 +600,11 @@
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_HAS_MEMBER_FUNCTION_WITH_SIG</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_MEMBER_FUNCTION_WITH_SIG.html" title="Macro BOOST_TTI_HAS_MEMBER_FUNCTION_WITH_SIG"><span class="index-entry-level-1">BOOST_TTI_HAS_MEMBER_FUNCTION_WITH_SIG</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_MEMBER_FUNCTION_WITH_SIG.html" title="Macro BOOST_TTI_HAS_MEMBER_FUNCTION_WITH_SIG"><span class="index-entry-level-1">BOOST_TTI_HAS_MEMBER_FUNCTION_WITH_SIG</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_MEMBER_FUNCTION_WITH_SIG.html" title="Macro BOOST_TTI_HAS_MEMBER_FUNCTION_WITH_SIG"><span class="index-entry-level-1">has_member_function_with_sig_name</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_MEMBER_FUNCTION_WITH_SIG.html" title="Macro BOOST_TTI_HAS_MEMBER_FUNCTION_WITH_SIG"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_HAS_MEMBER_FUNCTION_WITH_SIG_GEN</span></p>
@@ -560,7 +626,11 @@
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION"><span class="index-entry-level-1">BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION"><span class="index-entry-level-1">BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION"><span class="index-entry-level-1">trait</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_GEN</span></p>
@@ -571,7 +641,11 @@
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG.html" title="Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG"><span class="index-entry-level-1">BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG.html" title="Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG"><span class="index-entry-level-1">BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG.html" title="Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG"><span class="index-entry-level-1">has_static_member_function_with_sig_name</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG.html" title="Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG_GEN</span></p>
@@ -582,11 +656,19 @@
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_HAS_TEMPLATE</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_TEMPLATE.html" title="Macro BOOST_TTI_HAS_TEMPLATE"><span class="index-entry-level-1">BOOST_TTI_HAS_TEMPLATE</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_TEMPLATE.html" title="Macro BOOST_TTI_HAS_TEMPLATE"><span class="index-entry-level-1">BOOST_TTI_HAS_TEMPLATE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_TEMPLATE.html" title="Macro BOOST_TTI_HAS_TEMPLATE"><span class="index-entry-level-1">has_template_name</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_TEMPLATE.html" title="Macro BOOST_TTI_HAS_TEMPLATE"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">has_template_check_params_name</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS_GEN</span></p>
@@ -604,7 +686,11 @@
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_HAS_TYPE</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_TYPE.html" title="Macro BOOST_TTI_HAS_TYPE"><span class="index-entry-level-1">BOOST_TTI_HAS_TYPE</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_TYPE.html" title="Macro BOOST_TTI_HAS_TYPE"><span class="index-entry-level-1">BOOST_TTI_HAS_TYPE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_TYPE.html" title="Macro BOOST_TTI_HAS_TYPE"><span class="index-entry-level-1">has_type_name</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_TYPE.html" title="Macro BOOST_TTI_HAS_TYPE"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_HAS_TYPE_GEN</span></p>
@@ -615,7 +701,11 @@
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_MEMBER_TYPE</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_MEMBER_TYPE.html" title="Macro BOOST_TTI_MEMBER_TYPE"><span class="index-entry-level-1">BOOST_TTI_MEMBER_TYPE</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_MEMBER_TYPE.html" title="Macro BOOST_TTI_MEMBER_TYPE"><span class="index-entry-level-1">BOOST_TTI_MEMBER_TYPE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_MEMBER_TYPE.html" title="Macro BOOST_TTI_MEMBER_TYPE"><span class="index-entry-level-1">member_type_name</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_MEMBER_TYPE.html" title="Macro BOOST_TTI_MEMBER_TYPE"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_MEMBER_TYPE_GEN</span></p>
@@ -630,15 +720,27 @@
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_TRAIT_HAS_MEMBER_DATA</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_MEMBER_DATA.html" title="Macro BOOST_TTI_TRAIT_HAS_MEMBER_DATA"><span class="index-entry-level-1">BOOST_TTI_TRAIT_HAS_MEMBER_DATA</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_MEMBER_DATA.html" title="Macro BOOST_TTI_TRAIT_HAS_MEMBER_DATA"><span class="index-entry-level-1">BOOST_TTI_TRAIT_HAS_MEMBER_DATA</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_MEMBER_DATA.html" title="Macro BOOST_TTI_TRAIT_HAS_MEMBER_DATA"><span class="index-entry-level-1">trait</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_MEMBER_DATA.html" title="Macro BOOST_TTI_TRAIT_HAS_MEMBER_DATA"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION"><span class="index-entry-level-1">BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION"><span class="index-entry-level-1">BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION"><span class="index-entry-level-1">trait</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION_WITH_SIG</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION_WITH_SIG.html" title="Macro BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION_WITH_SIG"><span class="index-entry-level-1">BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION_WITH_SIG</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION_WITH_SIG.html" title="Macro BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION_WITH_SIG"><span class="index-entry-level-1">BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION_WITH_SIG</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION_WITH_SIG.html" title="Macro BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION_WITH_SIG"><span class="index-entry-level-1">trait</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION_WITH_SIG.html" title="Macro BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION_WITH_SIG"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_DATA</span></p>
@@ -646,31 +748,59 @@
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION"><span class="index-entry-level-1">BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION"><span class="index-entry-level-1">BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION"><span class="index-entry-level-1">trait</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG.html" title="Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG"><span class="index-entry-level-1">BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG.html" title="Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG"><span class="index-entry-level-1">BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG.html" title="Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG"><span class="index-entry-level-1">trait</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG.html" title="Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_TRAIT_HAS_TEMPLATE</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_TEMPLATE.html" title="Macro BOOST_TTI_TRAIT_HAS_TEMPLATE"><span class="index-entry-level-1">BOOST_TTI_TRAIT_HAS_TEMPLATE</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_TEMPLATE.html" title="Macro BOOST_TTI_TRAIT_HAS_TEMPLATE"><span class="index-entry-level-1">BOOST_TTI_TRAIT_HAS_TEMPLATE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_TEMPLATE.html" title="Macro BOOST_TTI_TRAIT_HAS_TEMPLATE"><span class="index-entry-level-1">trait</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_TEMPLATE.html" title="Macro BOOST_TTI_TRAIT_HAS_TEMPLATE"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">trait</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_TRAIT_HAS_TYPE</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_TYPE.html" title="Macro BOOST_TTI_TRAIT_HAS_TYPE"><span class="index-entry-level-1">BOOST_TTI_TRAIT_HAS_TYPE</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_TYPE.html" title="Macro BOOST_TTI_TRAIT_HAS_TYPE"><span class="index-entry-level-1">BOOST_TTI_TRAIT_HAS_TYPE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_TYPE.html" title="Macro BOOST_TTI_TRAIT_HAS_TYPE"><span class="index-entry-level-1">trait</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_TYPE.html" title="Macro BOOST_TTI_TRAIT_HAS_TYPE"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_TRAIT_MEMBER_TYPE</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_MEMBER_TYPE.html" title="Macro BOOST_TTI_TRAIT_MEMBER_TYPE"><span class="index-entry-level-1">BOOST_TTI_TRAIT_MEMBER_TYPE</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_MEMBER_TYPE.html" title="Macro BOOST_TTI_TRAIT_MEMBER_TYPE"><span class="index-entry-level-1">BOOST_TTI_TRAIT_MEMBER_TYPE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_MEMBER_TYPE.html" title="Macro BOOST_TTI_TRAIT_MEMBER_TYPE"><span class="index-entry-level-1">trait</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_MEMBER_TYPE.html" title="Macro BOOST_TTI_TRAIT_MEMBER_TYPE"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">has_template_check_params_name</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS_GEN</span></p>
@@ -681,7 +811,11 @@
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">trait</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Macro metafunction name generation considerations</span></p>
@@ -691,8 +825,15 @@
 </ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">member_type_name</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_MEMBER_TYPE.html" title="Macro BOOST_TTI_MEMBER_TYPE"><span class="index-entry-level-1">Macro BOOST_TTI_MEMBER_TYPE</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">mf_has_member_data</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_member_data.html" title="Struct template mf_has_member_data"><span class="index-entry-level-1">Struct template mf_has_member_data</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_member_data.html" title="Struct template mf_has_member_data"><span class="index-entry-level-1">Struct template mf_has_member_data</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_static_member_data.html" title="Struct template mf_has_static_member_data"><span class="index-entry-level-1">Struct template mf_has_static_member_data</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">mf_has_member_function</span></p>
@@ -704,7 +845,7 @@
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">mf_has_static_member_function</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_static_member_fu_id385388.html" title="Struct template mf_has_static_member_function"><span class="index-entry-level-1">Struct template mf_has_static_member_function</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_static_member_fu_id401941.html" title="Struct template mf_has_static_member_function"><span class="index-entry-level-1">Struct template mf_has_static_member_function</span></a></p></li></ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">mf_has_template</span></p>
@@ -712,7 +853,7 @@
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">mf_has_template_check_params</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_template_check_p_id385485.html" title="Struct template mf_has_template_check_params"><span class="index-entry-level-1">Struct template mf_has_template_check_params</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_template_check_p_id402055.html" title="Struct template mf_has_template_check_params"><span class="index-entry-level-1">Struct template mf_has_template_check_params</span></a></p></li></ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">mf_has_type</span></p>
@@ -760,46 +901,97 @@
 <dd><div class="index"><ul class="index" type="none" compact>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Struct template mf_has_member_data</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_member_data.html" title="Struct template mf_has_member_data"><span class="index-entry-level-1">mf_has_member_data</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_member_data.html" title="Struct template mf_has_member_data"><span class="index-entry-level-1">BOOST_TTI_HAS_MEMBER_DATA</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_member_data.html" title="Struct template mf_has_member_data"><span class="index-entry-level-1">BOOST_TTI_TRAIT_HAS_MEMBER_DATA</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_member_data.html" title="Struct template mf_has_member_data"><span class="index-entry-level-1">mf_has_member_data</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_member_data.html" title="Struct template mf_has_member_data"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Struct template mf_has_member_function</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_member_function.html" title="Struct template mf_has_member_function"><span class="index-entry-level-1">mf_has_member_function</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_member_function.html" title="Struct template mf_has_member_function"><span class="index-entry-level-1">BOOST_TTI_HAS_MEMBER_FUNCTION</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_member_function.html" title="Struct template mf_has_member_function"><span class="index-entry-level-1">BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_member_function.html" title="Struct template mf_has_member_function"><span class="index-entry-level-1">mf_has_member_function</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_member_function.html" title="Struct template mf_has_member_function"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Struct template mf_has_static_member_data</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_static_member_data.html" title="Struct template mf_has_static_member_data"><span class="index-entry-level-1">mf_has_static_member_data</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_static_member_data.html" title="Struct template mf_has_static_member_data"><span class="index-entry-level-1">BOOST_TTI_HAS_STATIC_MEMBER_DATA</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_static_member_data.html" title="Struct template mf_has_static_member_data"><span class="index-entry-level-1">BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_DATA</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_static_member_data.html" title="Struct template mf_has_static_member_data"><span class="index-entry-level-1">mf_has_member_data</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_static_member_data.html" title="Struct template mf_has_static_member_data"><span class="index-entry-level-1">mf_has_static_member_data</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_static_member_data.html" title="Struct template mf_has_static_member_data"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Struct template mf_has_static_member_function</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_static_member_fu_id385388.html" title="Struct template mf_has_static_member_function"><span class="index-entry-level-1">mf_has_static_member_function</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_static_member_fu_id401941.html" title="Struct template mf_has_static_member_function"><span class="index-entry-level-1">BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_static_member_fu_id401941.html" title="Struct template mf_has_static_member_function"><span class="index-entry-level-1">BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_static_member_fu_id401941.html" title="Struct template mf_has_static_member_function"><span class="index-entry-level-1">mf_has_static_member_function</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_static_member_fu_id401941.html" title="Struct template mf_has_static_member_function"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Struct template mf_has_template</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_template.html" title="Struct template mf_has_template"><span class="index-entry-level-1">mf_has_template</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_template.html" title="Struct template mf_has_template"><span class="index-entry-level-1">BOOST_TTI_HAS_TEMPLATE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_template.html" title="Struct template mf_has_template"><span class="index-entry-level-1">BOOST_TTI_TRAIT_HAS_TEMPLATE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_template.html" title="Struct template mf_has_template"><span class="index-entry-level-1">mf_has_template</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_template.html" title="Struct template mf_has_template"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Struct template mf_has_template_check_params</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_template_check_p_id385485.html" title="Struct template mf_has_template_check_params"><span class="index-entry-level-1">mf_has_template_check_params</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_template_check_p_id402055.html" title="Struct template mf_has_template_check_params"><span class="index-entry-level-1">BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_template_check_p_id402055.html" title="Struct template mf_has_template_check_params"><span class="index-entry-level-1">BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_template_check_p_id402055.html" title="Struct template mf_has_template_check_params"><span class="index-entry-level-1">BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_template_check_p_id402055.html" title="Struct template mf_has_template_check_params"><span class="index-entry-level-1">BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_template_check_p_id402055.html" title="Struct template mf_has_template_check_params"><span class="index-entry-level-1">mf_has_template_check_params</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_template_check_p_id402055.html" title="Struct template mf_has_template_check_params"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Struct template mf_has_type</span></p>
 <div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_type.html" title="Struct template mf_has_type"><span class="index-entry-level-1">BOOST_TTI_HAS_TYPE</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_type.html" title="Struct template mf_has_type"><span class="index-entry-level-1">BOOST_TTI_NAMESPACE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_type.html" title="Struct template mf_has_type"><span class="index-entry-level-1">BOOST_TTI_TRAIT_HAS_TYPE</span></a></p></li>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_type.html" title="Struct template mf_has_type"><span class="index-entry-level-1">mf_has_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_type.html" title="Struct template mf_has_type"><span class="index-entry-level-1">type</span></a></p></li>
 </ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Struct template mf_member_type</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_member_type.html" title="Struct template mf_member_type"><span class="index-entry-level-1">mf_member_type</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_member_type.html" title="Struct template mf_member_type"><span class="index-entry-level-1">BOOST_TTI_MEMBER_TYPE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_member_type.html" title="Struct template mf_member_type"><span class="index-entry-level-1">BOOST_TTI_TRAIT_MEMBER_TYPE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_member_type.html" title="Struct template mf_member_type"><span class="index-entry-level-1">mf_member_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_member_type.html" title="Struct template mf_member_type"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Struct template mf_valid_member_type</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_valid_member_type.html" title="Struct template mf_valid_member_type"><span class="index-entry-level-1">mf_valid_member_type</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_valid_member_type.html" title="Struct template mf_valid_member_type"><span class="index-entry-level-1">BOOST_TTI_MEMBER_TYPE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_valid_member_type.html" title="Struct template mf_valid_member_type"><span class="index-entry-level-1">BOOST_TTI_TRAIT_MEMBER_TYPE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_valid_member_type.html" title="Struct template mf_valid_member_type"><span class="index-entry-level-1">mf_valid_member_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_valid_member_type.html" title="Struct template mf_valid_member_type"><span class="index-entry-level-1">type</span></a></p></li>
+</ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">Struct template valid_member_type</span></p>
-<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/valid_member_type.html" title="Struct template valid_member_type"><span class="index-entry-level-1">valid_member_type</span></a></p></li></ul></div>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/valid_member_type.html" title="Struct template valid_member_type"><span class="index-entry-level-1">BOOST_TTI_MEMBER_TYPE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/valid_member_type.html" title="Struct template valid_member_type"><span class="index-entry-level-1">BOOST_TTI_TRAIT_MEMBER_TYPE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/valid_member_type.html" title="Struct template valid_member_type"><span class="index-entry-level-1">type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/valid_member_type.html" title="Struct template valid_member_type"><span class="index-entry-level-1">valid_member_type</span></a></p></li>
+</ul></div>
 </li>
 </ul></div></dd>
 <dt>
@@ -807,6 +999,22 @@
 </dt>
 <dd><div class="index"><ul class="index" type="none" compact>
 <li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">trait</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_MEMBER_DATA.html" title="Macro BOOST_TTI_TRAIT_HAS_MEMBER_DATA"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_HAS_MEMBER_DATA</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION_WITH_SIG.html" title="Macro BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION_WITH_SIG"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION_WITH_SIG</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG.html" title="Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_TEMPLATE.html" title="Macro BOOST_TTI_TRAIT_HAS_TEMPLATE"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_HAS_TEMPLATE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_TYPE.html" title="Macro BOOST_TTI_TRAIT_HAS_TYPE"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_HAS_TYPE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_MEMBER_TYPE.html" title="Macro BOOST_TTI_TRAIT_MEMBER_TYPE"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_MEMBER_TYPE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">Macro BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li>
+</ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">TTI Macro Metafunctions</span></p>
 <div class="index"><ul class="index" type="none" compact>
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_detail.html#the_type_traits_introspection_library.tti_detail.tbmacros" title="Table&#160;1.1.&#160;TTI Macro Metafunctions"><span class="index-entry-level-1">BOOST_TTI_HAS_MEMBER_DATA</span></a></p></li>
@@ -826,6 +1034,10 @@
 <div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_nested_type.html#the_type_traits_introspection_library.tti_nested_type.tbmacronested" title="Table&#160;1.2.&#160;TTI Nested Type Macro Metafunction"><span class="index-entry-level-1">BOOST_TTI_MEMBER_TYPE</span></a></p></li></ul></div>
 </li>
 <li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">TTI Nested Type Macro Metafunction Existence</span></p>
+<div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_nested_type.html#the_type_traits_introspection_library.tti_nested_type.existtbmacronested" title="Table&#160;1.3.&#160;TTI Nested Type Macro Metafunction Existence"><span class="index-entry-level-1">BOOST_TTI_MEMBER_TYPE</span></a></p></li></ul></div>
+</li>
+<li class="listitem" style="list-style-type: none">
 <p><span class="index-entry-level-0">TTI Nested Type Nullary Type Metafunction</span></p>
 <div class="index"><ul class="index" type="none" compact><li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_metafunctions.html#the_type_traits_introspection_library.tti_metafunctions.tbmetanested" title="Table&#160;1.5.&#160;TTI Nested Type Nullary Type Metafunction"><span class="index-entry-level-1">BOOST_TTI_MEMBER_TYPE</span></a></p></li></ul></div>
 </li>
@@ -842,6 +1054,41 @@
 <li class="listitem" style="list-style-type: none"><p><a class="link" href="../the_type_traits_introspection_library/tti_metafunctions.html#the_type_traits_introspection_library.tti_metafunctions.tbmetafunctions" title="Table&#160;1.4.&#160;TTI Nullary Type Metafunctions"><span class="index-entry-level-1">BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li>
 </ul></div>
 </li>
+<li class="listitem" style="list-style-type: none">
+<p><span class="index-entry-level-0">type</span></p>
+<div class="index"><ul class="index" type="none" compact>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_MEMBER_DATA.html" title="Macro BOOST_TTI_HAS_MEMBER_DATA"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_MEMBER_DATA</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_HAS_MEMBER_FUNCTION"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_MEMBER_FUNCTION</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_MEMBER_FUNCTION_WITH_SIG.html" title="Macro BOOST_TTI_HAS_MEMBER_FUNCTION_WITH_SIG"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_MEMBER_FUNCTION_WITH_SIG</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG.html" title="Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_TEMPLATE.html" title="Macro BOOST_TTI_HAS_TEMPLATE"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_TEMPLATE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_HAS_TYPE.html" title="Macro BOOST_TTI_HAS_TYPE"><span class="index-entry-level-1">Macro BOOST_TTI_HAS_TYPE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_MEMBER_TYPE.html" title="Macro BOOST_TTI_MEMBER_TYPE"><span class="index-entry-level-1">Macro BOOST_TTI_MEMBER_TYPE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_MEMBER_DATA.html" title="Macro BOOST_TTI_TRAIT_HAS_MEMBER_DATA"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_HAS_MEMBER_DATA</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION_WITH_SIG.html" title="Macro BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION_WITH_SIG"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_HAS_MEMBER_FUNCTION_WITH_SIG</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION.html" title="Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG.html" title="Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION_WITH_SIG</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_TEMPLATE.html" title="Macro BOOST_TTI_TRAIT_HAS_TEMPLATE"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_HAS_TEMPLATE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_HAS_TYPE.html" title="Macro BOOST_TTI_TRAIT_HAS_TYPE"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_HAS_TYPE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_TRAIT_MEMBER_TYPE.html" title="Macro BOOST_TTI_TRAIT_MEMBER_TYPE"><span class="index-entry-level-1">Macro BOOST_TTI_TRAIT_MEMBER_TYPE</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">Macro BOOST_TTI_VM_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS.html" title="Macro BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS"><span class="index-entry-level-1">Macro BOOST_TTI_VM_TRAIT_HAS_TEMPLATE_CHECK_PARAMS</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_member_data.html" title="Struct template mf_has_member_data"><span class="index-entry-level-1">Struct template mf_has_member_data</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_member_function.html" title="Struct template mf_has_member_function"><span class="index-entry-level-1">Struct template mf_has_member_function</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_static_member_data.html" title="Struct template mf_has_static_member_data"><span class="index-entry-level-1">Struct template mf_has_static_member_data</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_static_member_fu_id401941.html" title="Struct template mf_has_static_member_function"><span class="index-entry-level-1">Struct template mf_has_static_member_function</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_template.html" title="Struct template mf_has_template"><span class="index-entry-level-1">Struct template mf_has_template</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_template_check_p_id402055.html" title="Struct template mf_has_template_check_params"><span class="index-entry-level-1">Struct template mf_has_template_check_params</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_has_type.html" title="Struct template mf_has_type"><span class="index-entry-level-1">Struct template mf_has_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_member_type.html" title="Struct template mf_member_type"><span class="index-entry-level-1">Struct template mf_member_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/mf_valid_member_type.html" title="Struct template mf_valid_member_type"><span class="index-entry-level-1">Struct template mf_valid_member_type</span></a></p></li>
+<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost/tti/valid_member_type.html" title="Struct template valid_member_type"><span class="index-entry-level-1">Struct template valid_member_type</span></a></p></li>
+</ul></div>
+</li>
 </ul></div></dd>
 <dt>
 <a name="idx_id_8"></a><span class="term">U</span>

Modified: trunk/libs/tti/doc/html/standalone_HTML.manifest
==============================================================================
--- trunk/libs/tti/doc/html/standalone_HTML.manifest (original)
+++ trunk/libs/tti/doc/html/standalone_HTML.manifest 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -66,6 +66,7 @@
 BOOST_TTI_TRAIT_HAS_TYPE.html
 BOOST_TTI_HAS_TYPE.html
 header/boost/tti/member_type_hpp.html
+boost/tti/valid_member_type.html
 BOOST_TTI_TRAIT_MEMBER_TYPE.html
 BOOST_TTI_MEMBER_TYPE.html
 header/boost/tti/mf/mf_has_member_data_hpp.html
@@ -75,15 +76,14 @@
 header/boost/tti/mf/mf_has_static_member_data_hpp.html
 boost/tti/mf_has_static_member_data.html
 header/boost/tti/mf/mf_has_static_member_function_hpp.html
-boost/tti/mf_has_static_member_fu_id385388.html
+boost/tti/mf_has_static_member_fu_id401941.html
 header/boost/tti/mf/mf_has_template_hpp.html
 boost/tti/mf_has_template.html
 header/boost/tti/mf/mf_has_template_check_params_hpp.html
-boost/tti/mf_has_template_check_p_id385485.html
+boost/tti/mf_has_template_check_p_id402055.html
 header/boost/tti/mf/mf_has_type_hpp.html
 boost/tti/mf_has_type.html
 header/boost/tti/mf/mf_member_type_hpp.html
-boost/tti/valid_member_type.html
 boost/tti/mf_valid_member_type.html
 boost/tti/mf_member_type.html
 header/boost/tti/vm_has_template_check_params_hpp.html

Modified: trunk/libs/tti/doc/html/the_type_traits_introspection_library/tti_functionality.html
==============================================================================
--- trunk/libs/tti/doc/html/the_type_traits_introspection_library/tti_functionality.html (original)
+++ trunk/libs/tti/doc/html/the_type_traits_introspection_library/tti_functionality.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -83,9 +83,10 @@
           the inner element is used directly to generate the name of the metafunction
           as well as serving as the 'name' to introspect. In generating the name
           of the metafunction from the macro name, the <code class="computeroutput"><span class="identifier">BOOST_TTI_</span></code>
- prefix is removed, the rest of the macro name is changed to lower case,
- and an underscore ( '_' ) followed by the 'name' is appended. As an example,
- for the macro <code class="computeroutput"><span class="identifier">BOOST_TTI_HAS_TYPE</span><span class="special">(</span><span class="identifier">MyType</span><span class="special">)</span></code> the name of the metafunction is <code class="computeroutput"><span class="identifier">has_type_MyType</span></code> and it will look for
+ ( or <code class="computeroutput"><span class="identifier">BOOST_TTI_VM_</span></code> ) prefix
+ is removed, the rest of the macro name is changed to lower case, and an
+ underscore ( '_' ) followed by the 'name' is appended. As an example, for
+ the macro <code class="computeroutput"><span class="identifier">BOOST_TTI_HAS_TYPE</span><span class="special">(</span><span class="identifier">MyType</span><span class="special">)</span></code> the name of the metafunction is <code class="computeroutput"><span class="identifier">has_type_MyType</span></code> and it will look for
           an inner type called 'MyType'.
         </li>
 <li class="listitem">
@@ -159,10 +160,10 @@
         of programming clarity, is the same as the metafunction with further letters
         appended to it separated by an underscore, another rule is:
       </p>
-<div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem">
+<div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
             When using the complex macro form, which fully gives the name of the
             generated macro metafunction, that name should not end with an underscore.
- </li></ol></div>
+ </li></ul></div>
 <p>
         Following these two simple rules will avoid names with double underscores
         being generated by TTI.
@@ -184,9 +185,8 @@
         called 'InnerType' exists. For both these types we need only generate a single
         macro metafunction in the current scope by using:
       </p>
-<p>
- BOOST_TTI_HAS_TYPE(InnerType)
- </p>
+<pre class="programlisting"><span class="identifier">BOOST_TTI_HAS_TYPE</span><span class="special">(</span><span class="identifier">InnerType</span><span class="special">)</span>
+</pre>
 <p>
         We now have a metafunction, which is a C++ class template, in the current
         scope whose C++ identifier is 'has_type_InnerType'. We can use this same
@@ -213,9 +213,8 @@
         functions we need only generate a single macro metafunction in the current
         scope by using:
       </p>
-<p>
- BOOST_TTI_HAS_MEMBER_FUNCTION(AMemberFunction)
- </p>
+<pre class="programlisting"><span class="identifier">BOOST_TTI_HAS_MEMBER_FUNCTION</span><span class="special">(</span><span class="identifier">AMemberFunction</span><span class="special">)</span>
+</pre>
 <p>
         We now have a metafunction, which is a C++ class template, in the current
         scope whose C++ identifier is 'has_member_function_AMemberFunction'. We can

Modified: trunk/libs/tti/doc/html/the_type_traits_introspection_library/tti_metafunctions.html
==============================================================================
--- trunk/libs/tti/doc/html/the_type_traits_introspection_library/tti_metafunctions.html (original)
+++ trunk/libs/tti/doc/html/the_type_traits_introspection_library/tti_metafunctions.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -268,7 +268,7 @@
             </td>
 <td>
               <p>
- <code class="computeroutput"><a class="link" href="../boost/tti/mf_has_template_check_p_id385485.html" title="Struct template mf_has_template_check_params">boost::tti::mf_has_template_check_params</a></code>
+ <code class="computeroutput"><a class="link" href="../boost/tti/mf_has_template_check_p_id402055.html" title="Struct template mf_has_template_check_params">boost::tti::mf_has_template_check_params</a></code>
               </p>
             </td>
 <td>
@@ -410,7 +410,7 @@
             </td>
 <td>
               <p>
- <code class="computeroutput"><a class="link" href="../boost/tti/mf_has_static_member_fu_id385388.html" title="Struct template mf_has_static_member_function">boost::tti::mf_has_static_member_function</a></code>
+ <code class="computeroutput"><a class="link" href="../boost/tti/mf_has_static_member_fu_id401941.html" title="Struct template mf_has_static_member_function">boost::tti::mf_has_static_member_function</a></code>
               </p>
             </td>
 <td>

Modified: trunk/libs/tti/doc/html/the_type_traits_introspection_library/tti_nested_type.html
==============================================================================
--- trunk/libs/tti/doc/html/the_type_traits_introspection_library/tti_nested_type.html (original)
+++ trunk/libs/tti/doc/html/the_type_traits_introspection_library/tti_nested_type.html 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -295,15 +295,14 @@
       But this duplicates much of our code when we generated the 'MyFindType' typedef,
       so it would be much better if we could simply pass our 'MyFindType' type to
       some other metafunction which would tell us directly if 'MyFindType' actually
- exists. And so we can ! The TTI library has a named metafunction in the 'boost::tti'
- namespace called 'valid_member_type' which takes a type and determines if it
- 'actually exists', returning the compile-time boolean constant called 'value'
- of 'true' if it does or 'false' if it does not. The meaning of 'actually exists',
- as far as 'boost::tti::valid_member_type' is concerned, is that the type does
- not equal the unspecified type which BOOST_TTI_MEMBER_TYPE returns when its
- nested type does not exist, and therefore 'boost::tti::valid_member_type' is
- meant to be used with the return 'type' of BOOST_TTI_MEMBER_TYPE, which is
- what 'MyFindType' represents.
+ exists. And so we can ! The TTI library has a named metafunction called 'boost::tti::valid_member_type'
+ which takes a type and determines if it 'actually exists', returning the compile-time
+ boolean constant called 'value' of 'true' if it does or 'false' if it does
+ not. The meaning of 'actually exists', as far as 'boost::tti::valid_member_type'
+ is concerned, is that the type does not equal the unspecified type which BOOST_TTI_MEMBER_TYPE
+ returns when its nested type does not exist, and therefore 'boost::tti::valid_member_type'
+ is meant to be used with the return 'type' of BOOST_TTI_MEMBER_TYPE, which
+ is what 'MyFindType' represents.
     </p>
 <p>
       The general explanation of 'boost::tti::valid_member_type' is given as:
@@ -359,7 +358,8 @@
               </p>
               <p>
                 returns = true if the type exists, false if it does not. 'Existence'
- is determined by whether the type does not equal an unspecified type.
+ is determined by whether the type does not equal the unspecified
+ type of BOOST_TTI_MEMBER_TYPE when the type does not exist.
               </p>
             </td>
 <td>

Modified: trunk/libs/tti/doc/tti_functionality.qbk
==============================================================================
--- trunk/libs/tti/doc/tti_functionality.qbk (original)
+++ trunk/libs/tti/doc/tti_functionality.qbk 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -35,7 +35,7 @@
 # In the simplest macro form, which I call the simple form, the 'name' of the inner element
   is used directly to generate the name
   of the metafunction as well as serving as the 'name' to introspect. In generating the name of
- the metafunction from the macro name, the `BOOST_TTI_` prefix is removed,
+ the metafunction from the macro name, the `BOOST_TTI_` ( or `BOOST_TTI_VM_` ) prefix is removed,
   the rest of the macro name is changed to lower case, and an underscore ( '_' ) followed
   by the 'name' is appended. As an example, for the macro `BOOST_TTI_HAS_TYPE(MyType)` the
   name of the metafunction is `has_type_MyType` and it will look for an inner type called 'MyType'.
@@ -87,7 +87,7 @@
 supporting detail metafunctions whose identifier, for reasons of programming clarity, is the same
 as the metafunction with further letters appended to it separated by an underscore, another rule is:
 
-# When using the complex macro form, which fully gives the name of the generated
+* When using the complex macro form, which fully gives the name of the generated
 macro metafunction, that name should not end with an underscore.
 
 Following these two simple rules will avoid names with double underscores being
@@ -105,7 +105,7 @@
 'InnerType' exists. For both these types we need only generate a single macro metafunction in
 the current scope by using:
 
-BOOST_TTI_HAS_TYPE(InnerType)
+ BOOST_TTI_HAS_TYPE(InnerType)
 
 We now have a metafunction, which is a C++ class template, in the current scope whose C++ identifier
 is 'has_type_InnerType'. We can use this same metafunction to introspect the existence of the nested type
@@ -123,7 +123,7 @@
 but with the different function signatures of 'int (int)' and 'double (long)'. For both these
 member functions we need only generate a single macro metafunction in the current scope by using:
 
-BOOST_TTI_HAS_MEMBER_FUNCTION(AMemberFunction)
+ BOOST_TTI_HAS_MEMBER_FUNCTION(AMemberFunction)
 
 We now have a metafunction, which is a C++ class template, in the current scope whose C++ identifier
 is 'has_member_function_AMemberFunction'. We can use this same metafunction to introspect the

Modified: trunk/libs/tti/doc/tti_nested_type.qbk
==============================================================================
--- trunk/libs/tti/doc/tti_nested_type.qbk (original)
+++ trunk/libs/tti/doc/tti_nested_type.qbk 2011-08-28 21:18:39 EDT (Sun, 28 Aug 2011)
@@ -203,8 +203,8 @@
 But this duplicates much of our code when we generated the 'MyFindType' typedef, so
 it would be much better if we could simply pass our
 'MyFindType' type to some other metafunction which would tell us directly if 'MyFindType'
-actually exists. And so we can ! The TTI library has a named metafunction in the
-'boost::tti' namespace called 'valid_member_type' which takes a type and determines
+actually exists. And so we can ! The TTI library has a named metafunction
+called 'boost::tti::valid_member_type' which takes a type and determines
 if it 'actually exists', returning the compile-time boolean constant called 'value'
 of 'true' if it does or 'false' if it does not. The meaning of 'actually exists',
 as far as 'boost::tti::valid_member_type' is concerned, is that the type does not
@@ -230,7 +230,9 @@
     class T = a type
     
     returns = true if the type exists, false if it does not.
- 'Existence' is determined by whether the type does not equal an unspecified type.
+ 'Existence' is determined by whether the type
+ does not equal the unspecified type of BOOST_TTI_MEMBER_TYPE
+ when the type does not exist.
     ]
     [[headerref boost/tti/member_type.hpp `member_type.hpp`]]
   ]


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk