Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r68669 - in sandbox/tti: . boost/tti boost/tti/detail libs/tti/doc libs/tti/test
From: eldiener_at_[hidden]
Date: 2011-02-06 11:29:12


Author: eldiener
Date: 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
New Revision: 68669
URL: http://svn.boost.org/trac/boost/changeset/68669

Log:
Updated functionality and tests
Removed:
   sandbox/tti/boost/tti/detail/TTIntrospectionIterateEval.hpp
   sandbox/tti/boost/tti/detail/TTIntrospectionIterateEvalGcc3.hpp
Text files modified:
   sandbox/tti/boost/tti/TTIntrospection.hpp | 213 +++++++++++++++++++++++----------------
   sandbox/tti/boost/tti/TTIntrospectionTemplate.hpp | 59 +---------
   sandbox/tti/boost/tti/detail/TTIntrospectionDetail.hpp | 104 -------------------
   sandbox/tti/libs/tti/doc/TTIDetail.qbk | 36 ++++++
   sandbox/tti/libs/tti/doc/TTIHistory.qbk | 12 +
   sandbox/tti/libs/tti/doc/TTIIntroduction.qbk | 6
   sandbox/tti/libs/tti/doc/TTIMetafunctions.qbk | 125 ++++++++++++++---------
   sandbox/tti/libs/tti/doc/TTINestedType.qbk | 31 +++--
   sandbox/tti/libs/tti/doc/TTIToDo.qbk | 3
   sandbox/tti/libs/tti/doc/TTIUsingMM.qbk | 24 ++++
   sandbox/tti/libs/tti/doc/TTIUsingNTM.qbk | 42 +++---
   sandbox/tti/libs/tti/doc/build.txt | 10 +
   sandbox/tti/libs/tti/test/TestMFHasMemberData.cpp | 20 ++-
   sandbox/tti/libs/tti/test/TestMFHasMemberDataCompile.cpp | 20 ++-
   sandbox/tti/libs/tti/test/TestMFHasMemberDataFail.cpp | 4
   sandbox/tti/libs/tti/test/TestMFHasMemberDataFail2.cpp | 4
   sandbox/tti/libs/tti/test/TestMFHasMemberDataFail3.cpp | 4
   sandbox/tti/libs/tti/test/TestMFHasMemberFunction.cpp | 14 +-
   sandbox/tti/libs/tti/test/TestMFHasMemberFunctionCompile.cpp | 21 ++-
   sandbox/tti/libs/tti/test/TestMFHasMemberFunctionFail.cpp | 4
   sandbox/tti/libs/tti/test/TestMFHasMemberFunctionFail2.cpp | 4
   sandbox/tti/libs/tti/test/TestMFHasMemberFunctionFail3.cpp | 4
   sandbox/tti/libs/tti/test/TestMFHasStaticData.cpp | 4
   sandbox/tti/libs/tti/test/TestMFHasStaticDataCompile.cpp | 6
   sandbox/tti/libs/tti/test/TestMFHasStaticDataFail.cpp | 4
   sandbox/tti/libs/tti/test/TestMFHasStaticDataFail2.cpp | 4
   sandbox/tti/libs/tti/test/TestMFHasStaticDataFail3.cpp | 4
   sandbox/tti/libs/tti/test/TestMFHasStaticFunction.cpp | 8
   sandbox/tti/libs/tti/test/TestMFHasStaticFunctionCompile.cpp | 12 +
   sandbox/tti/libs/tti/test/TestMFHasStaticFunctionFail.cpp | 4
   sandbox/tti/libs/tti/test/TestMFHasStaticFunctionFail2.cpp | 4
   sandbox/tti/libs/tti/test/TestMFHasStaticFunctionFail3.cpp | 4
   sandbox/tti/libs/tti/test/TestMFHasTemplate.cpp | 12 +
   sandbox/tti/libs/tti/test/TestMFHasTemplateCheckParams.cpp | 16 +-
   sandbox/tti/libs/tti/test/TestMFHasTemplateCheckParamsCompile.cpp | 14 +-
   sandbox/tti/libs/tti/test/TestMFHasTemplateCheckParamsFail.cpp | 6
   sandbox/tti/libs/tti/test/TestMFHasTemplateCheckParamsFail2.cpp | 6
   sandbox/tti/libs/tti/test/TestMFHasTemplateCheckParamsFail3.cpp | 4
   sandbox/tti/libs/tti/test/TestMFHasTemplateCompile.cpp | 14 +-
   sandbox/tti/libs/tti/test/TestMFHasTemplateFail.cpp | 4
   sandbox/tti/libs/tti/test/TestMFHasTemplateFail2.cpp | 4
   sandbox/tti/libs/tti/test/TestMFHasTemplateFail3.cpp | 4
   sandbox/tti/libs/tti/test/TestMFHasTemplateFail4.cpp | 4
   sandbox/tti/libs/tti/test/TestMFHasType.cpp | 20 ++-
   sandbox/tti/libs/tti/test/TestMFHasTypeCheckTypedef.cpp | 24 ++--
   sandbox/tti/libs/tti/test/TestMFHasTypeCheckTypedefCompile.cpp | 26 ++--
   sandbox/tti/libs/tti/test/TestMFHasTypeCheckTypedefFail.cpp | 4
   sandbox/tti/libs/tti/test/TestMFHasTypeCheckTypedefFail2.cpp | 4
   sandbox/tti/libs/tti/test/TestMFHasTypeCheckTypedefFail3.cpp | 4
   sandbox/tti/libs/tti/test/TestMFHasTypeCompile.cpp | 24 ++--
   sandbox/tti/libs/tti/test/TestMFHasTypeFail.cpp | 4
   sandbox/tti/libs/tti/test/TestMFHasTypeFail2.cpp | 4
   sandbox/tti/libs/tti/test/TestMFMemberType.cpp | 92 +++++++++++------
   sandbox/tti/libs/tti/test/TestMFMemberTypeCompile.cpp | 45 +++----
   sandbox/tti/libs/tti/test/TestMemberType.cpp | 16 +-
   sandbox/tti/libs/tti/test/TestMemberTypeCompile.cpp | 17 +-
   sandbox/tti/libs/tti/test/TestVMMFHasTemplateCheckParams.cpp | 16 +-
   sandbox/tti/libs/tti/test/TestVMMFHasTemplateCheckParamsCompile.cpp | 14 +-
   sandbox/tti/libs/tti/test/TestVMMFHasTemplateCheckParamsFail.cpp | 6
   sandbox/tti/libs/tti/test/TestVMMFHasTemplateCheckParamsFail2.cpp | 6
   sandbox/tti/libs/tti/test/TestVMMFHasTemplateCheckParamsFail3.cpp | 4
   sandbox/tti/readme.txt | 10 +
   62 files changed, 670 insertions(+), 576 deletions(-)

Modified: sandbox/tti/boost/tti/TTIntrospection.hpp
==============================================================================
--- sandbox/tti/boost/tti/TTIntrospection.hpp (original)
+++ sandbox/tti/boost/tti/TTIntrospection.hpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -6,12 +6,15 @@
 #include <boost/function_types/parameter_types.hpp>
 #include <boost/function_types/property_tags.hpp>
 #include <boost/mpl/has_xxx.hpp>
+#include <boost/mpl/apply.hpp>
 #include <boost/mpl/at.hpp>
 #include <boost/mpl/bool.hpp>
 #include <boost/mpl/eval_if.hpp>
 #include <boost/mpl/identity.hpp>
 #include <boost/mpl/int.hpp>
+#include <boost/mpl/placeholders.hpp>
 #include <boost/mpl/quote.hpp>
+#include <boost/mpl/transform.hpp>
 #include <boost/mpl/vector.hpp>
 #include <boost/preprocessor/arithmetic/add.hpp>
 #include <boost/preprocessor/cat.hpp>
@@ -137,8 +140,6 @@
                 T = the enclosing type.<br />
                 returns = 'type' is the inner type of 'name' if the inner type exists
                           within the enclosing type, else 'type' is an unspecified type.<br />
- 'valid' is true if the inner type of 'name' exists
- within the enclosing type, else 'valid' is false.
                           
     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
@@ -165,10 +166,6 @@
         boost::mpl::identity<tti::detail::notype> \
>::type \
     type; \
- \
- typedef typename tti::detail::valid_type<type>::type valtype; \
- \
- BOOST_STATIC_CONSTANT(bool,valid=valtype::value); \
     }; \
   } \
 /**/
@@ -185,8 +182,6 @@
                 T = the enclosing type.<br />
                 returns = 'type' is the inner type of 'name' if the inner type exists
                           within the enclosing type, else 'type' is an unspecified type.<br />
- 'valid' is true if the inner type of 'name' exists
- within the enclosing type, else 'valid' is false.
                           
     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
@@ -1136,16 +1131,69 @@
 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 tti::mf_member_type is a valid type.
+/**
+
+ The metafunction types and return:
+
+ T = returned inner 'type' from invoking the macro metafunction generated by TTI_MEMBER_TYPE ( TTI_TRAIT_MEMBER_TYPE ) or from invoking tti::mf_member_type.
+
+ returns = 'value' is true if the type is valid, otherwise 'value' is false.
+
+*/
+ template
+ <
+ class T
+ >
+ struct valid_member_type :
+ boost::mpl::not_
+ <
+ boost::is_same
+ <
+ T,
+ 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 tti::mf_member_type is a valid type.
+/**
+
+ The metafunction types and return:
+
+ T = the nullary metafunction from invoking the macro metafunction generated by TTI_MEMBER_TYPE ( TTI_TRAIT_MEMBER_TYPE ) or from invoking tti::mf_member_type.
+
+ returns = 'value' is true if the type is valid, otherwise 'value' is false.
+
+*/
+ template
+ <
+ class T
+ >
+ struct mf_valid_member_type :
+ boost::mpl::not_
+ <
+ boost::is_same
+ <
+ typename T::type,
+ detail::notype
+ >
+ >
+ {
+ };
+
 /// A metafunction which checks whether a type exists within an enclosing type and optionally is a particular type.
 /**
 
- This metafunction takes all its types as nullary metafunctions whose typedef 'type' member is the actual type used.
+ This metafunction takes its specific types as nullary metafunctions whose typedef 'type' member is the actual type used.
     
     The metafunction types and return:
 
- HasType = template class generated from the TTI_HAS_TYPE ( or TTI_TRAIT_HAS_TYPE ) macro.<br />
- T = the enclosing type as a nullary metafunction.
- U = the type of the inner type as a nullary metafunction, as an optional parameter.<br />
+ HasType = a Boost MPL lambda expression using the metafunction generated from the TTI_HAS_TYPE ( or 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<_,_>' ).<br />
+ T = the enclosing type as a nullary metafunction.<br />
+ U = the type of the inner type as a nullary metafunction, as an optional parameter.
       
       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,
@@ -1154,30 +1202,29 @@
 */
   template
     <
- template<class,class> class HasType,
+ class HasType,
     class T,
     class U = boost::mpl::identity<tti::detail::notype>
>
   struct mf_has_type :
- tti::detail::eval
+ boost::mpl::apply
       <
- HasType
- <
- T,
- U
- >
- >
+ HasType,
+ typename T::type,
+ typename U::type
+ >::type
     {
     };
     
 /// A metafunction whose typedef 'type' is either the internal type or an unspecified type.
 /**
 
- This metafunction takes all its types as nullary metafunctions whose typedef 'type' member is the actual type used.
+ This metafunction takes its enclosing type as nullary metafunctions whose typedef 'type' member is the actual type used.
     
     The metafunction types and return:
 
- MemberType = template class generated from the TTI_MEMBER_TYPE ( or TTI_TRAIT_MEMBER_TYPE ) macro.<br />
+ MemberType = a Boost MPL lambda expression using the metafunction generated from the TTI_MEMBER_TYPE ( or 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<_>'.<br />
       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 )
@@ -1199,28 +1246,27 @@
 */
   template
     <
- template<class> class MemberType,
+ class MemberType,
     class T
>
   struct mf_member_type :
- tti::detail::eval
+ boost::mpl::apply
       <
- MemberType
- <
- T
- >
- >
+ MemberType,
+ typename T::type
+ >
     {
     };
     
 /// A metafunction which checks whether a class template exists within an enclosing type.
 /**
 
- This metafunction takes all its types as nullary metafunctions whose typedef 'type' member is the actual type used.
+ This metafunction takes its enclosing type as nullary metafunctions whose typedef 'type' member is the actual type used.
     
     The metafunction types and return:
 
- HasTemplate = template class generated from TTI_HAS_TEMPLATE ( TTI_TRAIT_HAS_TEMPLATE )<br />
+ HasTemplate = a Boost MPL lambda expression using the metafunction generated from the TTI_HAS_TEMPLATE ( 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<_>'.<br />
       T = the enclosing type as a nullary metafunction.
       
       returns = 'value' is true if the template exists within the enclosing type,
@@ -1229,32 +1275,33 @@
 */
   template
     <
- template<class> class HasTemplate,
+ class HasTemplate,
     class T
>
   struct mf_has_template :
- tti::detail::eval
+ boost::mpl::apply
       <
- HasTemplate
- <
- T
- >
- >
+ HasTemplate,
+ typename T::type
+ >::type
     {
     };
     
 /// A metafunction which checks whether a member function exists within an enclosing type.
 /**
 
- This metafunction takes all its types, except for the optional parameters, as nullary metafunctions whose typedef 'type' member is the actual type used.
+ This metafunction takes its specific types, except for the optional parameters, as nullary metafunctions whose typedef 'type' member is the actual type used.
     
     The metafunction types and return:
 
- HasMemberFunction = template class generated from the TTI_HAS_MEMBER_FUNCTION ( or TTI_TRAIT_HAS_MEMBER_FUNCTION ) macro.<br />
+ HasMemberFunction = a Boost MPL lambda expression using the metafunction generated from the TTI_HAS_MEMBER_FUNCTION ( or 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<_,_,_,_> )'.<br />
       T = the enclosing type as a nullary metafunction.<br />
       R = the return type of the member function as a nullary metafunction.<br />
- FS = an optional parameter which are the parameters of the member function, each as a nullary metafunction, as a boost::mpl forward sequence.<br />
- TAG = an optional parameter which is a boost::function_types tag to apply to the member function.
+ 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<>.<br />
+ 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.
       
       returns = 'value' is true if the member function exists within the enclosing type,
                 otherwise 'value' is false.
@@ -1262,34 +1309,33 @@
 */
   template
     <
- template<class,class,class,class> class HasMemberFunction,
+ class HasMemberFunction,
     class T,
     class R,
     class FS = boost::mpl::vector<>,
     class TAG = boost::function_types::null_tag
>
   struct mf_has_member_function :
- tti::detail::mf_eval_function
+ boost::mpl::apply
       <
- HasMemberFunction
- <
- T,
- R,
- FS,
- TAG
- >
- >
+ HasMemberFunction,
+ typename T::type,
+ typename R::type,
+ typename boost::mpl::transform<FS,detail::tself<boost::mpl::_1> >::type,
+ TAG
+ >::type
     {
     };
     
 /// A metafunction which checks whether a member data exists within an enclosing type.
 /**
 
- This metafunction takes all its types as nullary metafunctions whose typedef 'type' member is the actual type used.
+ This metafunction takes its specific types as nullary metafunctions whose typedef 'type' member is the actual type used.
     
     The metafunction types and return:
 
- HasMemberData = template class generated from the TTI_HAS_MEMBER_DATA ( or TTI_TRAIT_HAS_MEMBER_DATA ) macro.<br />
+ HasMemberData = a Boost MPL lambda expression using the metafunction generated from the TTI_HAS_MEMBER_DATA ( or 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<_,_>'.<br />
       T = the enclosing type as a nullary metafunction.<br />
       R = the type of the member data as a nullary metafunction.
       
@@ -1299,33 +1345,32 @@
 */
   template
     <
- template<class,class> class HasMemberData,
+ class HasMemberData,
     class T,
     class R
>
   struct mf_has_member_data :
- tti::detail::eval
+ boost::mpl::apply
       <
- HasMemberData
- <
- T,
- R
- >
- >
+ HasMemberData,
+ typename T::type,
+ typename R::type
+ >::type
     {
     };
     
 /// A metafunction which checks whether a static member function exists within an enclosing type.
 /**
 
- This metafunction takes all its types, except for the optional parameters, as nullary metafunctions whose typedef 'type' member is the actual type used.
+ This metafunction takes its specific types, except for the optional parameters, as nullary metafunctions whose typedef 'type' member is the actual type used.
     
     The metafunction types and return:
 
- HasStaticMemberFunction = template class generated from the TTI_HAS_STATIC_MEMBER_FUNCTION ( or TTI_TRAIT_HAS_STATIC_MEMBER_FUNCTION ) macro.<br />
+ 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 />
+ 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<_,_,_,_> )'.<br />
       T = the enclosing type as a nullary metafunction.<br />
       R = the return type of the static member function as a nullary metafunction.<br />
- FS = an optional parameter which are the parameters of the static member function, each as a nullary metafunction, as a boost::mpl forward sequence.<br />
+ FS = an optional parameter which is the parameters of the static member function, each as a nullary metafunction, as a boost::mpl forward sequence.<br />
       TAG = an optional parameter which is a boost::function_types tag to apply to the static member function.
       
       returns = 'value' is true if the member function exists within the enclosing type,
@@ -1334,34 +1379,33 @@
 */
   template
     <
- template<class,class,class,class> class HasStaticMemberFunction,
+ class HasStaticMemberFunction,
     class T,
     class R,
     class FS = boost::mpl::vector<>,
     class TAG = boost::function_types::null_tag
>
   struct mf_has_static_member_function :
- tti::detail::mf_eval_function
+ boost::mpl::apply
       <
- HasStaticMemberFunction
- <
- T,
- R,
- FS,
- TAG
- >
- >
+ HasStaticMemberFunction,
+ typename T::type,
+ typename R::type,
+ typename boost::mpl::transform<FS,detail::tself<boost::mpl::_1> >::type,
+ TAG
+ >::type
     {
     };
     
 /// A metafunction which checks whether a static member data exists within an enclosing type.
 /**
 
- This metafunction takes all its types as nullary metafunctions whose typedef 'type' member is the actual type used.
+ This metafunction takes its specific types as nullary metafunctions whose typedef 'type' member is the actual type used.
     
     The metafunction types and return:
 
- HasStaticMember = template class generated from the TTI_HAS_STATIC_MEMBER ( or TTI_TRAIT_HAS_STATIC_MEMBER ) macro.<br />
+ HasStaticMember = a Boost MPL lambda expression using the metafunction generated from the TTI_HAS_STATIC_MEMBER ( or TTI_TRAIT_HAS_STATIC_MEMBER ) macro.<br />
+ The easiest way to generate the lambda expression is to use a Boost MPL placeholder expression of the form 'metafunction<_,_>'.<br />
       T = the enclosing type as a nullary metafunction.<br />
       R = the type of the static member data as a nullary metafunction.
       
@@ -1371,22 +1415,19 @@
 */
   template
     <
- template<class,class> class HasStaticMember,
+ class HasStaticMember,
     class T,
     class R
>
   struct mf_has_static_data :
- tti::detail::eval
+ boost::mpl::apply
       <
- HasStaticMember
- <
- T,
- R
- >
- >
+ HasStaticMember,
+ typename T::type,
+ typename R::type
+ >::type
     {
     };
-
   }
   
 #endif // TT_INTROSPECTION_HPP

Modified: sandbox/tti/boost/tti/TTIntrospectionTemplate.hpp
==============================================================================
--- sandbox/tti/boost/tti/TTIntrospectionTemplate.hpp (original)
+++ sandbox/tti/boost/tti/TTIntrospectionTemplate.hpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -1,8 +1,8 @@
 #if !defined(TT_INTROSPECTION_TEMPLATE_HPP)
 #define TT_INTROSPECTION_TEMPLATE_HPP
 
-#include <boost/mpl/bool.hpp>
 #include <boost/mpl/identity.hpp>
+#include <boost/mpl/apply.hpp>
 #include "detail/TTIntrospectionDetail.hpp"
 
 /*
@@ -17,50 +17,16 @@
 namespace tti
   {
   
-#if !defined(TTI_GNUC3)
-
-/// A metafunction which checks whether a class template with its parameters exists within an enclosing type.
-/**
-
- This metafunction takes all its types as nullary metafunctions whose typedef 'type' member is the actual type used.
-
- The metafunction types and return:
-
- HasTemplateCheckParams = Template class generated from either 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 />
- T = The enclosing type as a nullary metafunction.
-
- returns = 'value' is true if the template exists within the enclosing type,
- otherwise 'value' is false.
-
-*/
- template
- <
- template<class,class = boost::mpl::false_> class HasTemplateCheckParams,
- class T
- >
- struct mf_has_template_check_params :
- tti::detail::eval
- <
- HasTemplateCheckParams
- <
- T
- >
- >
- {
- };
-
-#else
-
 /// A metafunction which checks whether a class template with its parameters exists within an enclosing type.
 /**
 
- This metafunction takes all its types as nullary metafunctions whose typedef 'type' member is the actual type used.
+ This metafunction takes its enclosing type as nullary metafunctions whose typedef 'type' member is the actual type used.
     
     The metafunction types and return:
 
- HasTemplateCheckParams = Template class generated from either TTI_HAS_TEMPLATE_CHECK_PARAMS ( TTI_TRAIT_HAS_TEMPLATE_CHECK_PARAMS )
+ 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 />
+ The easiest way to generate the lambda expression is to use a Boost MPL placeholder expression of the form 'metafunction<_>'.<br />
       T = The enclosing type as a nullary metafunction.
       
       returns = 'value' is true if the template exists within the enclosing type,
@@ -69,23 +35,14 @@
 */
   template
     <
- template<class,class = boost::mpl::false_> class HasTemplateCheckParams,
+ class HasTemplateCheckParams,
     class T
>
- struct mf_has_template_check_params :
- tti::detail::eval_gcc3
- <
- HasTemplateCheckParams
- <
- T
- >,
- 1
- >
+ struct mf_has_template_check_params
     {
+ typedef typename boost::mpl::apply<HasTemplateCheckParams,typename T::type>::type type;
+ BOOST_STATIC_CONSTANT(bool,value=type::value);
     };
-
-#endif
-
   }
   
 #endif // TT_INTROSPECTION_TEMPLATE_HPP

Modified: sandbox/tti/boost/tti/detail/TTIntrospectionDetail.hpp
==============================================================================
--- sandbox/tti/boost/tti/detail/TTIntrospectionDetail.hpp (original)
+++ sandbox/tti/boost/tti/detail/TTIntrospectionDetail.hpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -373,14 +373,6 @@
 
 #endif // defined(BOOST_NO_NULLPTR)
 
-#if !defined(TTI_MAX_PARAMETERS) || TTI_MAX_PARAMETERS < 1 || TTI_MAX_PARAMETERS > 254
-#define TTI_MAX_PARAMETERS 10
-#endif
-
-#if defined(__GNUC__) && __GNUC__ == 3
-#define TTI_GNUC3 1
-#endif
-
 namespace tti
   {
   namespace detail
@@ -388,78 +380,12 @@
     struct notype
       {
       };
- struct noparam
- {
- typedef tti::detail::noparam type;
- };
-
- template<class T>
- struct eval;
-
-#define BOOST_PP_ITERATION_LIMITS (1,BOOST_PP_ADD(2,TTI_MAX_PARAMETERS))
-#define BOOST_PP_FILENAME_1 <boost\tti\detail\TTIntrospectionIterateEval.hpp>
-#include BOOST_PP_ITERATE()
-
-#if defined(TTI_GNUC3)
       
- template<class T,int N>
- struct eval_gcc3;
-
-#define BOOST_PP_ITERATION_LIMITS (1,BOOST_PP_ADD(2,TTI_MAX_PARAMETERS))
-#define BOOST_PP_FILENAME_1 <boost\tti\detail\TTIntrospectionIterateEvalGcc3.hpp>
-#include BOOST_PP_ITERATE()
-
-#endif
-
     template <class T>
     struct tself : T
       {
       };
   
- template<class T>
- struct mf_eval_function;
-
- template
- <
- template
- <
- class,
- class,
- class,
- class
- >
- class TC,
- class T,
- class R,
- class FS,
- class TAG
- >
- struct mf_eval_function<TC<T,R,FS,TAG> > :
- TC
- <
- typename T::type,
- typename R::type,
- typename boost::mpl::transform<FS,tself<boost::mpl::_1> >::type,
- TAG
- >
- {
- };
-
- template
- <
- class T,
- class R,
- class FS,
- class TAG
- >
- struct mf_ptmf_seq
- {
- typedef typename boost::mpl::transform<FS,tself<boost::mpl::_1> >::type tfs;
- typedef typename boost::mpl::push_front<tfs,typename T::type>::type tfs1;
- typedef typename boost::mpl::push_front<tfs1,typename R::type>::type tfs2;
- typedef typename boost::function_types::member_function_pointer<tfs2,TAG>::type type;
- };
-
     template
       <
       class T,
@@ -495,36 +421,6 @@
       typedef typename boost::mpl::push_front<FS,R>::type ftseq;
       typedef typename boost::function_types::function_type<ftseq,TAG>::type type;
       };
-
- template
- <
- class R,
- class FS,
- class TAG
- >
- struct mf_tfunction_seq
- {
- typedef typename boost::mpl::transform<FS,tself<boost::mpl::_1> >::type fseq;
- typedef typename boost::mpl::push_front<fseq,typename R::type>::type ftseq;
- typedef typename boost::function_types::function_type<ftseq,TAG>::type type;
- };
-
- template
- <
- class T
- >
- struct valid_type :
- boost::mpl::not_
- <
- boost::is_same
- <
- T,
- notype
- >
- >
- {
- };
-
     }
   }
   

Deleted: sandbox/tti/boost/tti/detail/TTIntrospectionIterateEval.hpp
==============================================================================
--- sandbox/tti/boost/tti/detail/TTIntrospectionIterateEval.hpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
+++ (empty file)
@@ -1,15 +0,0 @@
- template
- <
- template
- <
- BOOST_PP_REPEAT(BOOST_PP_ITERATION(),TTI_DETAIL_PP_REPEAT_CLASS,class)
- >
- class F,
- BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PP_ADD(1,BOOST_PP_ITERATION()),class P)
- >
- struct eval<F<BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PP_ADD(1,BOOST_PP_ITERATION()),P)> > :
- F
- <
- BOOST_PP_ENUM_SHIFTED(BOOST_PP_ADD(1,BOOST_PP_ITERATION()),TTI_DETAIL_PP_ENUM_SHIFTED_TYPENAME,pdata)
- >
- {};

Deleted: sandbox/tti/boost/tti/detail/TTIntrospectionIterateEvalGcc3.hpp
==============================================================================
--- sandbox/tti/boost/tti/detail/TTIntrospectionIterateEvalGcc3.hpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
+++ (empty file)
@@ -1,15 +0,0 @@
- template
- <
- template
- <
- BOOST_PP_REPEAT(BOOST_PP_ITERATION(),TTI_DETAIL_PP_REPEAT_CLASS,class)
- >
- class F,
- BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PP_ADD(1,BOOST_PP_ITERATION()),class P)
- >
- struct eval_gcc3<F<BOOST_PP_ENUM_SHIFTED_PARAMS(BOOST_PP_ADD(1,BOOST_PP_ITERATION()),P)>,BOOST_PP_ITERATION() > :
- F
- <
- BOOST_PP_ENUM_SHIFTED(BOOST_PP_ADD(1,BOOST_PP_ITERATION()),TTI_DETAIL_PP_ENUM_SHIFTED_TYPENAME,pdata)
- >
- {};

Modified: sandbox/tti/libs/tti/doc/TTIDetail.qbk
==============================================================================
--- sandbox/tti/libs/tti/doc/TTIDetail.qbk (original)
+++ sandbox/tti/libs/tti/doc/TTIDetail.qbk 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -22,7 +22,7 @@
 introspecting metafunctions in the table below return a boolean constant called 'value', which
 specifies whether or not the inner element exists.
 
-[table:tbmacros TTI Macros
+[table:tbmacros TTI Macro Metafunctions
   [
     [Inner Element]
     [Macro]
@@ -129,8 +129,10 @@
     
     class FS = (optional) function parameter types as a Boost MPL forward sequence.
                 If there are no function parameters this does not have to be specified.
+ Defaults to boost::mpl::vector<>.
     
     class TAG = (optional) Boost function_types tag type.
+ Defaults to boost::function_types::null_tag.
     ]
   ]
   [
@@ -164,8 +166,10 @@
     
     class FS = (optional) function parameter types as a Boost MPL forward sequence.
                 If there are no function parameters this does not have to be specified.
+ Defaults to boost::mpl::vector<>.
     
     class TAG = (optional) Boost function_types tag type.
+ Defaults to boost::function_types::null_tag.
     ]
   ]
 ]
@@ -175,7 +179,7 @@
 Instead the macro metafunction created returns the nested type if it exists, else
 it returns an unspecified type.
 
-[table:tbmacronested TTI Nested Type Macro
+[table:tbmacronested TTI Nested Type Macro Metafunction
   [
     [Inner Element]
     [Macro]
@@ -192,12 +196,36 @@
     class T = enclosing type
     
     returns = the type of 'name' if it exists, else an unspecified type, as a typedef 'type'.
- Also returns a boolean constant which is true if 'name' exists, else false, called 'valid'.
     ]
   ]
 ]
 
-The usefulness of this macro, and its corresponding metafunction, will be shown
+Along with this macro metafunction we have another metafunction which, when passed a 'type',
+which can be any type but which will generally be used with the type returned by
+invoking the metafunction generated by TTI\_MEMBER\_TYPE, will tell use whether the type exists
+or not as a boolean constant.
+
+[table:existtbmacronested TTI Nested Type Macro Metafunction Existence
+ [
+ [Inner Element]
+ [Macro]
+ [Template]
+ ]
+ [
+ [Type]
+ [None]
+ [
+ [classref tti::valid_member_type]
+
+ 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.
+ ]
+ ]
+]
+
+The usefulness of the TTI\_MEMBER\_TYPE macro metafunction will be shown
 in the next topic when I explain the problem of specifying nested types and how TTI solves
 it.
 

Modified: sandbox/tti/libs/tti/doc/TTIHistory.qbk
==============================================================================
--- sandbox/tti/libs/tti/doc/TTIHistory.qbk (original)
+++ sandbox/tti/libs/tti/doc/TTIHistory.qbk 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -2,21 +2,25 @@
 
 Version 1.1
 
-* Library now compiles with gcc 3.4.2 and gcc 3.4.5.
+* Library now also compiles with gcc 3.4.2 and gcc 3.4.5.
 * Examples of use have been added to the documentation.
+* In the documentation the previously mentioned 'nested type metafunctions' are now called "nullary type metafunctions'.
 * TTI_HAS_TYPE and tti::mf_has_type now have optional typedef checking.
 * New macro metafunction functionality which allows composite typed to be treated as individual types has been implemented. These include:
   * TTI_HAS_MEMBER_DATA
   * TTI_HAS_MEMBER_FUNCTION
   * TTI_HAS_STATIC_MEMBER_FUNCTION
-* New nullary metafunction functionality which uses new underlying macro metafunctions. These include:
- * tti::mf_has_static_member_function uses the new underlying TTI_HAS_STATIC_MEMBER_FUNCTION macro metafunction.
- Its signature uses an optional MPL forward sequence for the parameter types and an optional Boost function_types tag type.
+* New nullary type metafunction tti::mf_has_static_member_function uses the new underlying TTI_HAS_STATIC_MEMBER_FUNCTION macro metafunction.
+ Its signature uses an optional MPL forward sequence for the parameter types and an optional Boost function_types tag type.
+* New nullary type metafunctions tti::valid_member_type and tti::mf_valid_member_type for checking if the 'type' returned from invoking the TTI_MEMBER_TYPE or tti::mf_member_type metafunctions is valid.
 * Breaking changes
   * TTI_HAS_TYPE_CHECK_TYPEDEF and tti::mf_has_type_check_typedef have been removed, and the functionality in them folded into TTI_HAS_TYPE and tti::mf_has_type.
+ * TTI_MEMBER_TYPE and tti::mf_member_type no longer also return a 'valid' boolean constant. Use tti::valid_member_type or tti::mf_valid_member_type metafunctions instead ( see above ).
   * tti::mf_has_static_function has been removed and its functionality moved to tti::mf_has_static_member_function ( see above ).
   * tti::mf_member_data uses the new underlying TTI_HAS_MEMBER_DATA macro metafunction.
   * The signature for tti::mf_has_member_function has changed to use an optional MPL forward sequence for the parameter types and an optional Boost function_types tag type.
+ * All nullary type metafunctions take their corresponding macro metafunction parameter as a class in the form of a Boost MPL lambda expression instead of as a template template parameter as previously.
+ Using a placeholder expression is the easiest way to pass the corresponding macro metafunction to its nullary type metafunction.
 
 Version 1.0
 

Modified: sandbox/tti/libs/tti/doc/TTIIntroduction.qbk
==============================================================================
--- sandbox/tti/libs/tti/doc/TTIIntroduction.qbk (original)
+++ sandbox/tti/libs/tti/doc/TTIIntroduction.qbk 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -28,13 +28,13 @@
   type's element and generates a metafunction which can be
   subsequently invoked to determine whether or not the
   element exists within the type. These metafunctions
- will be called macro metafunctions in the documentation.
+ will be called "macro metafunctions" in the documentation.
 * Provide corresponding metafunctions which can operate
   on nearly each of the macro metafunctions generated.
   These secondary metafunctions provide nearly
   the same set of introspection as the macro metafunctions but
- allow for an easier to use syntax and lazy evaluation, where
- the types being passed are in the form of metafunctions
+ allow for an easier to use syntax, where
+ the types being passed are in the form of nullary metafunctions
   themselves. They always work with individual types
   when specifying function and data syntax rather than a
   composite type. These metafunctions are called 'nullary type

Modified: sandbox/tti/libs/tti/doc/TTIMetafunctions.qbk
==============================================================================
--- sandbox/tti/libs/tti/doc/TTIMetafunctions.qbk (original)
+++ sandbox/tti/libs/tti/doc/TTIMetafunctions.qbk 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -1,16 +1,26 @@
 [section:tti_metafunctions Nullary Type Metafunctions]
 
 The nullary type metafunctions parallel most of the macro metafunctions but more easily allow
-a syntax where nested types can be specified without needing to reach into the 'type'
+a syntax where nested types can be specified without needing to manually reach into the 'type'
 member of TTI\_MEMBER\_TYPE or its nullary type metafunction equivalent of tti::mf\_member\_type.
-Such nullary type metafunctions also offer the advantage of lazy evaluation.
+In a very real way the nullary type metafunctions exist just to provide syntactic improvements
+over the macro metafunctions and are not needed to use the library, since all of the library
+functionality is already provided with the macro metafunctions. Nonetheless syntactic ease of use
+is a very real goal of the TTI library and therefore these metafunctions are provided to allow
+that syntactic improvement.
+
+For each of these nullary type metafunctions the first parameter is a Boost MPL lambda expression
+using its corresponding the macro metafunction to pass metafunctions as data. The easiest way to
+do this is to use a Boost MPL placeholder expression. The syntax for passing the corresponding
+macro metafunction becomes 'macrometafunction<_>' etc. depending on how many parameters are bring passed.
+Thus for two parameters we would have 'macrometafunction<_,_>' etc., with another placeholder ('_') added
+for each subsequent parameter.
 
-For each of these metafunctions the first parameter is the class template of its corresponding macro metafunction
-and the remaining parameter are 'types'. These 'types' always consist first of the enclosing type and then
+The remaining parameter are 'types'. These 'types' always consist first of the enclosing type and then
 possibly other types which make up the signature of whatever inner element we are introspecting. Each of these
 'types' is passed as a nullary metafunction whose typedef 'type' is the actual type.
 
-The only exception to this use of nullary metafunctions when specifying 'types' is when a Boost
+The only exception to this use of nullary type metafunctions when specifying 'types' is when a Boost
 function_types tag type, which is optional, is specified as an addition to the function signature.
 Also when dealing with a function signature and parameter types are being passed, while the
 parameter 'types' themselves are in the form of nullary metafunctions, the MPL forward sequence
@@ -18,9 +28,9 @@
 
 For a type which is in scope, we can always use
 boost::mpl::identity to create our nullary metafunction, and there can never be a compiler error for
-such known types as long as such declarations for them exist. For nested types, which may or may not
-exist, we can pass the result of TTI\_MEMBER\_TYPE or its equivalent
-nullary type metafunction tti::mf\_member\_type ( explained later ).
+such known types as long as declarations for them exist or it is a built-in C++ type.
+For nested types, which may or may not exist, we can pass the result of TTI\_MEMBER\_TYPE
+or its equivalent nullary type metafunction tti::mf\_member\_type ( explained later ).
 
 To use these metafunctions you need to include the main header file 'TTIntrospection.hpp',
 unless otherwise noted.
@@ -29,7 +39,9 @@
 manually include it in order to use boost::mpl::identity to wrap a known type as a nullary
 metafunction for the nullary type metafunctions. Also the header file <boost/mpl/vector.hpp> is
 included by the main TTI header file 'TTIntrospection.hpp' so if you use an MPL vector as your
-forward sequence wrapper for parameter types, you need not manually include the header file.]
+forward sequence wrapper for parameter types, you need not manually include the header file. Finally
+the header file <boost/mpl/placeholders.hpp> is also included by 'TTIntrospection.hpp' so you need
+not manually include it yourself in order to use placeholder expressions.]
 
 A table of these metafunctions is given, based on the inner element whose
 existence the metaprogrammer is introspecting. A more detailed explanation can be found
@@ -39,7 +51,7 @@
 all have a particular name based on the type of its functionality, and all begin with the prefix
 'mf_' so as not to conflict with the macro metafunction names generated by the library.
 
-[table:tbmetafunctions TTI Metafunctions
+[table:tbmetafunctions TTI Nullary Type Metafunctions
   [
     [Inner Element]
     [Template]
@@ -52,9 +64,7 @@
     [classref tti::mf_has_type]
     ]
     [
- template<class,class = unspecified type> class HasType
-
- = generated macro metafunction
+ class HasType = macro metafunction as lambda expression
     
     class T = enclosing type nullary metafunction
     ]
@@ -66,9 +76,7 @@
     [classref tti::mf_has_type]
     ]
     [
- template<class,class = unspecified type> class HasType
-
- = generated macro metafunction
+ class HasType = macro metafunction as lambda expression
     
     class T = enclosing type nullary metafunction
     
@@ -82,9 +90,7 @@
     [classref tti::mf_has_template]
     ]
     [
- template<class> class HasTemplate
-
- = generated macro metafunction
+ class HasTemplate = macro metafunction as lambda expression
     
     class T = enclosing type nullary metafunction
     ]
@@ -96,9 +102,7 @@
     [classref tti::mf_has_template_check_params]
     ]
     [
- template<class> class HasTemplateCheckParams
-
- = generated macro metafunction
+ class HasTemplateCheckParams = macro metafunction as lambda expression
     
     class T = enclosing type nullary metafunction
     ]
@@ -114,9 +118,7 @@
     [classref tti::mf_has_member_data]
     ]
     [
- template<class,class> class HasMemberData
-
- = generated macro metafunction
+ class HasMemberData = macro metafunction as lambda expression
     
     class T = enclosing type nullary metafunction
     
@@ -130,9 +132,7 @@
     [classref tti::mf_has_member_function]
     ]
     [
- template<class,class,class,class> class HasMemberFunction
-
- = generated macro metafunction
+ class HasMemberFunction = macro metafunction as lambda expression
     
     class T = enclosing type nullary metafunction
     
@@ -152,9 +152,7 @@
     [classref tti::mf_has_static_data]
     ]
     [
- template<class,class> class HasStaticMember
-
- = generated macro metafunction
+ class HasStaticMember = macro metafunction as lambda expression
     
     class T = enclosing type nullary metafunction
     
@@ -168,9 +166,7 @@
     [classref tti::mf_has_static_member_function]
     ]
     [
- template<class,class,class,class> class HasStaticMemberFunction
-
- = generated macro metafunction
+ class HasStaticMemberFunction = macro metafunction as lambda expression
     
     class T = enclosing type nullary metafunction
     
@@ -189,7 +185,7 @@
 Other than the use of nearly all types as nullary metafunctions, one other difference
 in the nullary type metafunctions from their macro metafunction counterparts is
 that the signature for member functions, member data, and static member functions
-is always broken down into individual types, rather than the combined type notation which
+always involves individual types rather than the combined type notation which
 some of the macro metafunctions use. This allows us to specify nested types
 in those signatures without using the T::InnerType notation.
 
@@ -199,7 +195,7 @@
 a macro metafunction which returns a nested type if it exists, else an unspecified
 type, there is also the equivalent nullary type metafunction.
 
-[table:tbmetanested TTI Nested Type Metafunction
+[table:tbmetanested TTI Nested Type Nullary Type Metafunction
   [
     [Inner Element]
     [Template]
@@ -212,9 +208,7 @@
     [classref tti::mf_member_type]
     ]
     [
- template<class> class MemberType
-
- = generated macro metafunction
+ class MemberType = macro metafunction as lambda expression
     
     class T = enclosing type nullary metafunction
     ]
@@ -222,10 +216,15 @@
   ]
 ]
 
+The difference between the macro metafunction TTI\_MEMBER\_TYPE and
+tti::mf\_member\_type is simply that, like the other nullary type metafunctions,
+the latter takes its enclosing type as a nullary metafunction. Both produce the
+exact same result.
+
 The use of this metafunction allows us to created deeply nested types,
 which may or may not exist, as nullary metafunctions in much the same way
 that TTI\_MEMBER\_TYPE can. The difference is
-the simpler syntax when using mf\_member\_type.
+the simpler syntax when using tti::mf\_member\_type.
 
 As an example, given the theoretical relationship of types we used before:
 
@@ -245,26 +244,26 @@
      };
    };
   
-We can use mf_member_type as follows. First we create our corresponding macro metafunctions:
+We can use tti::mf_member_type as follows. First we create our corresponding macro metafunctions:
 
  TTI_MEMBER_TYPE(FindType)
  TTI_MEMBER_TYPE(AType)
  TTI_MEMBER_TYPE(BType)
  TTI_MEMBER_TYPE(CType)
 
-Next we can create a typedef to reflect a nested type called FindType which has the relationship
-as specified above by instantiating using mf_member_type.
+Next we can create a typedef to reflect a nested type called FindType, as a nullary metafunction,
+which has the relationship as specified above by using tti::mf\_member\_type.
 
  typedef
  tti::mf_member_type
    <
- tti::member_type_FindType,
+ tti::member_type_FindType<_>,
    tti::mf_member_type
      <
- tti::member_type_CType,
+ tti::member_type_CType<_>,
      tti::mf_member_type
        <
- tti::member_type_BType,
+ tti::member_type_BType<_>,
        tti::member_type_AType
          <
          T
@@ -274,14 +273,44 @@
> MyFindType;
   
 The nested type created can be used with the other nullary type metafunctions above.
-The key information above is that the enclosing type is a nullary metafunction,
+The key information above is that the enclosing type, as in all of the nullary type
+metafunctions, is a nullary metafunction itself,
 which means that the enclosing type can be specified as the result
 of using TTI\_MEMBER\_TYPE as well as the
-result of using mf\_member\_type itself. Both techniques are shown in the example
+result of using mf\_member\_type itself.
+
+Both techniques are shown in the example
 above, and the same technique for creating nested types as nullary metafunctions
 can be used with the other functionality of the nullary type metafunctions when
 nested types are needed as 'types'.
 
+Also similar to the macro metafunctions, we have an easy way of testing whether or not
+our tti::mf_member_type nested type actually exists.
+
+[table:existtbmetanested TTI Nested Type Nullary Type Metafunction Existence
+ [
+ [Inner Element]
+ [Template]
+ [Parameters]
+ ]
+ [
+ [Type]
+ [
+ [classref tti::mf_valid_member_type]
+ ]
+ [
+ class T = a type as a nullary metafunction
+
+ returns = true if the nullary metafunction's inner 'type' exists, false if it does not.
+ 'Existence' is determined by whether the type does not equal an unspecified type.
+ ]
+ ]
+]
+
+Again note the difference here from the equivalent macro metafunction tti::valid\_member\_type.
+In the example above the type T is passed as a nullary metafunction holding the actual type,
+where for the macro metafunction equivalent the type T is passed as the actual type being tested.
+
 In our next section we will look at examples of nullary type metafunction use.
 
 [endsect]

Modified: sandbox/tti/libs/tti/doc/TTINestedType.qbk
==============================================================================
--- sandbox/tti/libs/tti/doc/TTINestedType.qbk (original)
+++ sandbox/tti/libs/tti/doc/TTINestedType.qbk 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -99,7 +99,7 @@
>::type
>::type
>::type
- > MyFindType;
+ >::type MyFindType;
   
 We can use the above typedef to pass the type as FindType
 to one of our macro metafunctions. FindType may not actually exist but we will not generate
@@ -143,15 +143,18 @@
>::type
>
   
-Because this duplicates much of our code using 'MyFindType' to create our nested type as a metafunction,
-TTI\_MEMBER\_TYPE also has, as a convenience, a boolean compile-time constant value
-called 'valid' which returns 'true' if our nested type exists or 'false' if it does not.
-Using this functionality of TTI\_MEMBER\_TYPE with our 'MyFindType' metafunction above
+Because this duplicates much of our code for the 'MyFindType' typedef to
+create our nested type, we can instead, and much more easily, pass our type 'MyFindType', since we already
+have it in the form of a type,
+to another metafunction called 'tti::valid_member_type', which returns a boolean constant
+which is 'true' if our nested exists or 'false' if it does not.
+
+Using this functionality with our 'MyFindType' type above
 we could create the nullary metafunction:
 
- boost::mpl::bool_
+ tti::valid_member_type
    <
- MyFindType::valid
+ MyFindType
>
  
 directly instead of replicating the same functionality with our 'tti::has_type_FindType' metafunction.
@@ -159,13 +162,13 @@
 The using of TTI\_MEMBER\_TYPE to create a nested type which may or may not exist, and which can
 subsequently be used with our macro metafunctions whenever a nested type is required, without producing
 a compiler error when the type does not actually exist, is the main reason we have separate
-but similar functionality to determine whether a member data, a member function, or a static member
+but similar functionality among our macro metafunctions to determine whether a member data, a member function, or a static member
 function exists within an enclosing type.
 
-In the more general form, using TTI\_HAS\_MEMBER and TTI\_HAS\_STATIC\_MEMBER, the signature for the member
+In the more general case, when using TTI\_HAS\_MEMBER and TTI\_HAS\_STATIC\_MEMBER, the signature for the member
 data, member function, and the function portion of a static member function is a composite type. This makes
-for a syntactical notation which is easy to denotate, but we
-can not use the nested type functionality in TTI\_MEMBER\_TYPE within this notation very easily. But
+for a syntactical notation which is easy to specify, but because of that composite type notation we
+can not use the nested type functionality in TTI\_MEMBER\_TYPE very easily. But
 when we use the TTI\_HAS\_MEMBER\_DATA, TTI\_HAS\_MEMBER\_FUNCTION, and TTI\_HAS\_STATIC\_MEMBER\_FUNCTION
 the composite types in our signatures are broken down into their individual types so that using
 TTI\_MEMBER\_TYPE, if necessary, for one of the individual types is easy.
@@ -178,14 +181,14 @@
 does get syntactically tedious.
 
 Because of this the TTI library offers a parallel set of
-metafunctions to the macro metafunctions where the 'types' specified are themselves nullary
-metafunctions and which, as with all metafunctions, lazy evaluation can take place.
+metafunctions to the macro metafunctions where the 'types' specified are themselves nullary metafunctions.
 This parallel set of metafunctions, using nullary metafunctions to specify individual types,
+rather than the actual types themselves,
 are called 'nullary type metafunctions'. In this group there is also a nullary metafunction
 paralleling our TTI\_MEMBER\_TYPE macro metafunction, and therefore a further construct
 making the specifying of nested types easy and error-free to use.
 
-This group of nullary metafunctions will be
+This group of nullary type metafunctions will be
 fully explained later after we give some examples of macro metafunction use.
 
 [endsect]

Modified: sandbox/tti/libs/tti/doc/TTIToDo.qbk
==============================================================================
--- sandbox/tti/libs/tti/doc/TTIToDo.qbk (original)
+++ sandbox/tti/libs/tti/doc/TTIToDo.qbk 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -1,6 +1,7 @@
 [section:tti_todo ToDo]
 
-* Create metafunctions that work with mpl lambda expressions.
 * See if function templates can be introspected.
+* Improve tests
+* Improve documentation
 
 [endsect]

Modified: sandbox/tti/libs/tti/doc/TTIUsingMM.qbk
==============================================================================
--- sandbox/tti/libs/tti/doc/TTIUsingMM.qbk (original)
+++ sandbox/tti/libs/tti/doc/TTIUsingMM.qbk 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -242,4 +242,28 @@
>::type
>::type
  
+[heading Member type existence]
+
+Does a nested type T::BType::CType, created without creating a compiler error
+if T does not have the nested type BType::CType, actually exist ?
+
+ TTI_MEMBER_TYPE(BType)
+ TTI_MEMBER_TYPE(CType)
+
+ typedef typename
+ tti::member_type_CType
+ <
+ typename
+ tti::member_type_BType
+ <
+ T
+ >::type
+ >::type
+ AType;
+
+ tti::valid_member_type
+ <
+ AType
+ >
+
 [endsect]

Modified: sandbox/tti/libs/tti/doc/TTIUsingNTM.qbk
==============================================================================
--- sandbox/tti/libs/tti/doc/TTIUsingNTM.qbk (original)
+++ sandbox/tti/libs/tti/doc/TTIUsingNTM.qbk 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -88,8 +88,8 @@
  
 [heading Member type]
 
-We start off by creating typedef's for our theoretical inner types
-in relation to T as nullary metafunctions. None of these typedefs
+We start off by creating typedef's, as nullary metafunctions, for our
+theoretical inner types in relation to T . None of these typedefs
 will produce a compiler error even if our structure does not correspond
 to T's reality. This also illustrates using 'tti::mf_member_type'.
 
@@ -100,7 +100,7 @@
  typedef
  tti::mf_member_type
    <
- tti::member_type_BType,
+ tti::member_type_BType<_>,
    boost::mpl::identity<T>
>
  BTypeNM;
@@ -108,7 +108,7 @@
  typedef
  tti::mf_member_type
    <
- tti::member_type_CType,
+ tti::member_type_CType<_>,
    BTypeNM
>
  CTypeNM;
@@ -116,7 +116,7 @@
  typedef
  tti::mf_member_type
    <
- tti::member_type_DType,
+ tti::member_type_DType<_>,
    CTypeNM
>
  DTypeNM;
@@ -131,16 +131,16 @@
   
  tti::mf_has_type
    <
- tti::has_type_DType,
+ tti::has_type_DType<_>,
    CTypeNM
>
    
-We could just have easily used the boolean constant 'valid' of our
-DTypeNM typedef to the same effect:
+We could just have easily used the tti::mf_valid_member_type
+metafunction to the same effect:
 
- boost::mpl::bool_
+ tti::mf_valid_member_type
     <
- DTypeNM::valid
+ DTypeNM
>
    
 [heading Type checking the typedef]
@@ -152,7 +152,7 @@
  
  tti::mf_has_type
    <
- tti::has_type_ADoubleType,
+ tti::has_type_ADoubleType<_,_>,
    DTypeNM,
    boost::mpl::identity<double>
>
@@ -166,7 +166,7 @@
  
  tti::mf_has_template
    <
- tti::has_template_AMemberTemplate,
+ tti::has_template_AMemberTemplate<_>,
    CTypeNM
>
 
@@ -179,23 +179,23 @@
  
  tti::mf_has_template_check_params
    <
- tti::has_template_check_params_ManyParameters,
+ tti::has_template_check_params_ManyParameters<_>,
    BTypeNM
>
 
 [heading Template with params using variadic macros]
 
-[note Include the 'TTIntrospectionVM.hpp' header file
-when using this macro.]
-
 Does T have a nested class template called 'MoreParameters'
 within 'BType::CType' whose template parameters are specified exactly ?
 
+[note Include the 'TTIntrospectionVM.hpp' header file
+when using this macro.]
+
  TTI_VM_HAS_TEMPLATE_CHECK_PARAMS(MoreParameters,class,class,int,short,class,template <class,int> class InnerTemplate,class)
  
  tti::mf_has_template_check_params
    <
- tti::has_template_check_params_MoreParameters,
+ tti::has_template_check_params_MoreParameters<_>,
    CTypeNM
>
 
@@ -207,7 +207,7 @@
  
  tti::mf_has_member_data
    <
- tti::has_member_data_IntBT,
+ tti::has_member_data_IntBT<_,_>,
    boost::mpl::identity<T>,
    BTypeNM
>
@@ -221,7 +221,7 @@
  
  tti::mf_has_member_function
    <
- tti::has_member_function_IntFunction,
+ tti::has_member_function_IntFunction<_,_,_,_>,
    DTypeNM,
    boost::mpl::identity<int>,
    boost::mpl::vector<boost::mpl::identity<short> >,
@@ -237,7 +237,7 @@
  
  tti::mf_has_static_data
    <
- tti::has_static_member_DSMember,
+ tti::has_static_member_DSMember<_,_>,
    DTypeNM,
    boost::mpl::identity<short>
>
@@ -251,7 +251,7 @@
  
  tti::mf_has_static_member_function
    <
- tti::has_static_member_function_SIntFunction,
+ tti::has_static_member_function_SIntFunction<_,_,_>,
    DTypeNM,
    boost::mpl::identity<int>,
    boost::mpl::vector<boost::mpl::identity<long>,boost::mpl::identity<double> >

Modified: sandbox/tti/libs/tti/doc/build.txt
==============================================================================
--- sandbox/tti/libs/tti/doc/build.txt (original)
+++ sandbox/tti/libs/tti/doc/build.txt 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -49,7 +49,9 @@
 
 If you want to contact me directly, my name is
 Edward Diener and you can reach me at
-eld_at_tropicsoft.com. You can also of course
-use the Boost newsgroups to ask questions
-and make comments or suggestions about the
-library.
+eld_at_tropicsoft.com. I am an independent computer
+consultant and I live in Atlanta, Georgia.
+
+You can also of course use the Boost newsgroups
+to ask questions and make comments or suggestions
+about the library.

Modified: sandbox/tti/libs/tti/test/TestMFHasMemberData.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasMemberData.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasMemberData.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,9 +4,11 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   BOOST_TEST((tti::mf_has_member_data
                 <
- tti::has_member_data_AnInt,
+ tti::has_member_data_AnInt<_,_>,
                 boost::mpl::identity<AType>,
                 boost::mpl::identity<int>
>
@@ -15,7 +17,7 @@
             
   BOOST_TEST((tti::mf_has_member_data
                 <
- tti::has_member_data_AnInt,
+ tti::has_member_data_AnInt<_,_>,
                 boost::mpl::identity<AnotherType>,
                 boost::mpl::identity<long>
>
@@ -24,7 +26,7 @@
             
   BOOST_TEST((tti::mf_has_member_data
                 <
- tti::has_member_data_aMember,
+ tti::has_member_data_aMember<_,_>,
                 boost::mpl::identity<AnotherType>,
                 boost::mpl::identity<bool>
>
@@ -33,7 +35,7 @@
             
   BOOST_TEST((tti::mf_has_member_data
                 <
- tti::CMember,
+ tti::CMember<_,_>,
                 boost::mpl::identity<AnotherType>,
                 boost::mpl::identity<bool>
>
@@ -42,7 +44,7 @@
   
   BOOST_TEST((tti::mf_has_member_data
                 <
- tti::has_member_data_IntBT,
+ tti::has_member_data_IntBT<_,_>,
                 boost::mpl::identity<AType>,
                 tti::member_type_BType<AType>
>
@@ -51,11 +53,11 @@
   
   BOOST_TEST((tti::mf_has_member_data
                 <
- tti::NestedData,
+ tti::NestedData<_,_>,
                 boost::mpl::identity<AType>,
                 tti::mf_member_type
                   <
- tti::member_type_CType,
+ tti::member_type_CType<_>,
                   tti::member_type_BType<AType>
>
>
@@ -64,7 +66,7 @@
   
   BOOST_TEST((tti::mf_has_member_data
                 <
- tti::AOther,
+ tti::AOther<_,_>,
                 boost::mpl::identity<AnotherType>,
                 boost::mpl::identity<AType>
>
@@ -73,7 +75,7 @@
   
   BOOST_TEST((tti::mf_has_member_data
                 <
- tti::has_member_data_ONestStr,
+ tti::has_member_data_ONestStr<_,_>,
                 boost::mpl::identity<AnotherType>,
                 tti::member_type_AStructType<AType>
>

Modified: sandbox/tti/libs/tti/test/TestMFHasMemberDataCompile.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasMemberDataCompile.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasMemberDataCompile.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,9 +4,11 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   BOOST_MPL_ASSERT((tti::mf_has_member_data
                       <
- tti::has_member_data_AnInt,
+ tti::has_member_data_AnInt<_,_>,
                       boost::mpl::identity<AType>,
                       boost::mpl::identity<int>
>
@@ -14,7 +16,7 @@
                   
   BOOST_MPL_ASSERT((tti::mf_has_member_data
                       <
- tti::has_member_data_AnInt,
+ tti::has_member_data_AnInt<_,_>,
                       boost::mpl::identity<AnotherType>,
                       boost::mpl::identity<long>
>
@@ -22,7 +24,7 @@
                   
   BOOST_MPL_ASSERT((tti::mf_has_member_data
                       <
- tti::has_member_data_aMember,
+ tti::has_member_data_aMember<_,_>,
                       boost::mpl::identity<AnotherType>,
                       boost::mpl::identity<bool>
>
@@ -30,7 +32,7 @@
                   
   BOOST_MPL_ASSERT((tti::mf_has_member_data
                       <
- tti::CMember,
+ tti::CMember<_,_>,
                       boost::mpl::identity<AnotherType>,
                       boost::mpl::identity<bool>
>
@@ -38,7 +40,7 @@
   
   BOOST_MPL_ASSERT((tti::mf_has_member_data
                 <
- tti::has_member_data_IntBT,
+ tti::has_member_data_IntBT<_,_>,
                 boost::mpl::identity<AType>,
                 tti::member_type_BType<AType>
>
@@ -46,11 +48,11 @@
   
   BOOST_MPL_ASSERT((tti::mf_has_member_data
                 <
- tti::NestedData,
+ tti::NestedData<_,_>,
                 boost::mpl::identity<AType>,
                 tti::mf_member_type
                   <
- tti::member_type_CType,
+ tti::member_type_CType<_>,
                   tti::member_type_BType<AType>
>
>
@@ -58,7 +60,7 @@
   
   BOOST_MPL_ASSERT((tti::mf_has_member_data
                 <
- tti::AOther,
+ tti::AOther<_,_>,
                 boost::mpl::identity<AnotherType>,
                 boost::mpl::identity<AType>
>
@@ -66,7 +68,7 @@
   
   BOOST_MPL_ASSERT((tti::mf_has_member_data
                 <
- tti::has_member_data_ONestStr,
+ tti::has_member_data_ONestStr<_,_>,
                 boost::mpl::identity<AnotherType>,
                 tti::member_type_AStructType<AType>
>

Modified: sandbox/tti/libs/tti/test/TestMFHasMemberDataFail.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasMemberDataFail.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasMemberDataFail.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,11 +4,13 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // someDataMember does not exist at all
   
   BOOST_MPL_ASSERT((tti::mf_has_member_data
                       <
- tti::has_member_data_someDataMember,
+ tti::has_member_data_someDataMember<_,_>,
                       boost::mpl::identity<AnotherType>,
                       boost::mpl::identity<short>
>

Modified: sandbox/tti/libs/tti/test/TestMFHasMemberDataFail2.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasMemberDataFail2.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasMemberDataFail2.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,11 +4,13 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // Wrong data signature for AnInt
   
   BOOST_MPL_ASSERT((tti::mf_has_member_data
                       <
- tti::has_member_data_AnInt,
+ tti::has_member_data_AnInt<_,_>,
                       boost::mpl::identity<AnotherType>,
                       boost::mpl::identity<double>
>

Modified: sandbox/tti/libs/tti/test/TestMFHasMemberDataFail3.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasMemberDataFail3.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasMemberDataFail3.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,11 +4,13 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // Wrong enclosing type
   
   BOOST_MPL_ASSERT((tti::mf_has_member_data
                       <
- tti::has_member_data_aMember,
+ tti::has_member_data_aMember<_,_>,
                       boost::mpl::identity<AType>,
                       boost::mpl::identity<bool>
>

Modified: sandbox/tti/libs/tti/test/TestMFHasMemberFunction.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasMemberFunction.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasMemberFunction.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,9 +4,11 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   BOOST_TEST((tti::mf_has_member_function
                 <
- tti::has_member_function_VoidFunction,
+ tti::has_member_function_VoidFunction<_,_>,
                 boost::mpl::identity<AType>,
                 boost::mpl::identity<void>
>
@@ -15,7 +17,7 @@
   
   BOOST_TEST((tti::mf_has_member_function
                 <
- tti::FunctionReturningInt,
+ tti::FunctionReturningInt<_,_>,
                 boost::mpl::identity<AType>,
                 boost::mpl::identity<int>
>
@@ -24,7 +26,7 @@
   
   BOOST_TEST((tti::mf_has_member_function
                 <
- tti::FunctionReturningInt,
+ tti::FunctionReturningInt<_,_,_>,
                 boost::mpl::identity<AnotherType>,
                 boost::mpl::identity<double>,
                 boost::mpl::vector<boost::mpl::identity<int> >
@@ -34,7 +36,7 @@
   
   BOOST_TEST((tti::mf_has_member_function
                 <
- tti::has_member_function_aFunction,
+ tti::has_member_function_aFunction<_,_,_>,
                 boost::mpl::identity<AnotherType>,
                 boost::mpl::identity<AType>,
                 boost::mpl::vector<boost::mpl::identity<int> >
@@ -44,7 +46,7 @@
   
   BOOST_TEST((tti::mf_has_member_function
                 <
- tti::AnotherIntFunction,
+ tti::AnotherIntFunction<_,_,_>,
                 boost::mpl::identity<AnotherType>,
                 boost::mpl::identity<int>,
                 boost::mpl::vector<boost::mpl::identity<AType> >
@@ -54,7 +56,7 @@
   
   BOOST_TEST((tti::mf_has_member_function
                 <
- tti::has_member_function_sFunction,
+ tti::has_member_function_sFunction<_,_,_>,
                 boost::mpl::identity<AnotherType>,
                 tti::member_type_AnIntType<AType>,
                 boost::mpl::vector

Modified: sandbox/tti/libs/tti/test/TestMFHasMemberFunctionCompile.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasMemberFunctionCompile.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasMemberFunctionCompile.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -1,22 +1,23 @@
 #include "TestMFHasMemberFunction.hpp"
 #include <boost/mpl/assert.hpp>
-#include <boost/mpl/vector.hpp>
 
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // You can always instantiate without compiler errors
   
   tti::mf_has_member_function
     <
- tti::FunctionReturningInt,
+ tti::FunctionReturningInt<_,_>,
     boost::mpl::identity<AnotherType>,
     boost::mpl::identity<short>
> aVar;
   
   tti::mf_has_member_function
     <
- tti::has_member_function_sFunction,
+ tti::has_member_function_sFunction<_,_,_>,
     boost::mpl::identity<AnotherType>,
     tti::member_type_AnIntType<AnotherType>,
     boost::mpl::vector
@@ -29,7 +30,7 @@
                       
   tti::mf_has_member_function
     <
- tti::has_member_function_someFunctionMember,
+ tti::has_member_function_someFunctionMember<_,_,_>,
     boost::mpl::identity<AnotherType>,
     boost::mpl::identity<short>,
     boost::mpl::vector
@@ -44,7 +45,7 @@
   
   BOOST_MPL_ASSERT((tti::mf_has_member_function
                       <
- tti::has_member_function_VoidFunction,
+ tti::has_member_function_VoidFunction<_,_>,
                       boost::mpl::identity<AType>,
                       boost::mpl::identity<void>
>
@@ -52,7 +53,7 @@
   
   BOOST_MPL_ASSERT((tti::mf_has_member_function
                       <
- tti::FunctionReturningInt,
+ tti::FunctionReturningInt<_,_>,
                       boost::mpl::identity<AType>,
                       boost::mpl::identity<int>
>
@@ -60,7 +61,7 @@
   
   BOOST_MPL_ASSERT((tti::mf_has_member_function
                       <
- tti::FunctionReturningInt,
+ tti::FunctionReturningInt<_,_,_>,
                       boost::mpl::identity<AnotherType>,
                       boost::mpl::identity<double>,
                       boost::mpl::vector<boost::mpl::identity<int> >
@@ -69,7 +70,7 @@
                   
   BOOST_MPL_ASSERT((tti::mf_has_member_function
                       <
- tti::has_member_function_aFunction,
+ tti::has_member_function_aFunction<_,_,_>,
                       boost::mpl::identity<AnotherType>,
                       boost::mpl::identity<AType>,
                       boost::mpl::vector<boost::mpl::identity<int> >
@@ -78,7 +79,7 @@
   
   BOOST_MPL_ASSERT((tti::mf_has_member_function
                       <
- tti::AnotherIntFunction,
+ tti::AnotherIntFunction<_,_,_>,
                       boost::mpl::identity<AnotherType>,
                       boost::mpl::identity<int>,
                       boost::mpl::vector<boost::mpl::identity<AType> >
@@ -87,7 +88,7 @@
   
   BOOST_MPL_ASSERT((tti::mf_has_member_function
                       <
- tti::has_member_function_sFunction,
+ tti::has_member_function_sFunction<_,_,_>,
                       boost::mpl::identity<AnotherType>,
                       tti::member_type_AnIntType<AType>,
                       boost::mpl::vector

Modified: sandbox/tti/libs/tti/test/TestMFHasMemberFunctionFail.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasMemberFunctionFail.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasMemberFunctionFail.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,11 +4,13 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // someFunctionMember does not exist at all
   
   BOOST_MPL_ASSERT((tti::mf_has_member_function
                       <
- tti::has_member_function_someFunctionMember,
+ tti::has_member_function_someFunctionMember<_,_,_>,
                       boost::mpl::identity<AnotherType>,
                       boost::mpl::identity<short>,
                       boost::mpl::vector

Modified: sandbox/tti/libs/tti/test/TestMFHasMemberFunctionFail2.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasMemberFunctionFail2.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasMemberFunctionFail2.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,11 +4,13 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // Wrong function signature
   
   BOOST_MPL_ASSERT((tti::mf_has_member_function
                       <
- tti::FunctionReturningInt,
+ tti::FunctionReturningInt<_,_>,
                       boost::mpl::identity<AnotherType>,
                       boost::mpl::identity<short>
>

Modified: sandbox/tti/libs/tti/test/TestMFHasMemberFunctionFail3.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasMemberFunctionFail3.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasMemberFunctionFail3.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,11 +4,13 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // Wrong enclosing type for nested type
   
   BOOST_MPL_ASSERT((tti::mf_has_member_function
                       <
- tti::has_member_function_sFunction,
+ tti::has_member_function_sFunction<_,_,_>,
                       boost::mpl::identity<AnotherType>,
                       tti::member_type_AnIntType<AnotherType>,
                       boost::mpl::vector

Modified: sandbox/tti/libs/tti/test/TestMFHasStaticData.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasStaticData.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasStaticData.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,9 +4,11 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   BOOST_TEST((tti::mf_has_static_data
                 <
- tti::has_static_member_DSMember,
+ tti::has_static_member_DSMember<_,_>,
                 boost::mpl::identity<AType>,
                 boost::mpl::identity<short>
>

Modified: sandbox/tti/libs/tti/test/TestMFHasStaticDataCompile.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasStaticDataCompile.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasStaticDataCompile.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,11 +4,13 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // You can always instantiate without compiler errors
   
   tti::mf_has_static_data
     <
- tti::has_static_member_SomeStaticData,
+ tti::has_static_member_SomeStaticData<_,_>,
     boost::mpl::identity<AnotherType>,
     boost::mpl::identity<double>
> aVar;
@@ -17,7 +19,7 @@
   
   BOOST_MPL_ASSERT((tti::mf_has_static_data
                       <
- tti::has_static_member_DSMember,
+ tti::has_static_member_DSMember<_,_>,
                       boost::mpl::identity<AType>,
                       boost::mpl::identity<short>
>

Modified: sandbox/tti/libs/tti/test/TestMFHasStaticDataFail.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasStaticDataFail.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasStaticDataFail.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,11 +4,13 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // SomeStaticData does not exist at all
   
   BOOST_MPL_ASSERT((tti::mf_has_static_data
                       <
- tti::has_static_member_SomeStaticData,
+ tti::has_static_member_SomeStaticData<_,_>,
                       boost::mpl::identity<AnotherType>,
                       boost::mpl::identity<int>
>

Modified: sandbox/tti/libs/tti/test/TestMFHasStaticDataFail2.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasStaticDataFail2.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasStaticDataFail2.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,11 +4,13 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // Wrong enclosing type
   
   BOOST_MPL_ASSERT((tti::mf_has_static_data
                       <
- tti::has_static_member_DSMember,
+ tti::has_static_member_DSMember<_,_>,
                       boost::mpl::identity<AnotherType>,
                       boost::mpl::identity<short>
>

Modified: sandbox/tti/libs/tti/test/TestMFHasStaticDataFail3.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasStaticDataFail3.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasStaticDataFail3.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,11 +4,13 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // Wrong member type
   
   BOOST_MPL_ASSERT((tti::mf_has_static_data
                       <
- tti::has_static_member_DSMember,
+ tti::has_static_member_DSMember<_,_>,
                       boost::mpl::identity<AType>,
                       boost::mpl::identity<int>
>

Modified: sandbox/tti/libs/tti/test/TestMFHasStaticFunction.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasStaticFunction.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasStaticFunction.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,9 +4,11 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   BOOST_TEST((tti::mf_has_static_member_function
                 <
- tti::HaveTheSIntFunction,
+ tti::HaveTheSIntFunction<_,_,_>,
                 boost::mpl::identity<AType>,
                 boost::mpl::identity<int>,
                 boost::mpl::vector
@@ -20,7 +22,7 @@
   
   BOOST_TEST((tti::mf_has_static_member_function
                 <
- tti::TheTIntFunction,
+ tti::TheTIntFunction<_,_,_>,
                 boost::mpl::identity<AnotherType>,
                 boost::mpl::identity<AType>,
                 boost::mpl::vector
@@ -34,7 +36,7 @@
   
   BOOST_TEST((tti::mf_has_static_member_function
                 <
- tti::has_static_member_function_TSFunction,
+ tti::has_static_member_function_TSFunction<_,_,_>,
                 boost::mpl::identity<AnotherType>,
                 tti::member_type_AStructType<AType>,
                 boost::mpl::vector

Modified: sandbox/tti/libs/tti/test/TestMFHasStaticFunctionCompile.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasStaticFunctionCompile.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasStaticFunctionCompile.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,11 +4,13 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // You can always instantiate without compiler errors
   
   tti::mf_has_static_member_function
     <
- tti::HaveTheSIntFunction,
+ tti::HaveTheSIntFunction<_,_,_>,
     boost::mpl::identity<AType>,
     boost::mpl::identity<int>,
     boost::mpl::vector
@@ -20,7 +22,7 @@
   
   tti::mf_has_static_member_function
     <
- tti::Pickedname,
+ tti::Pickedname<_,_,_>,
     boost::mpl::identity<AType>,
     boost::mpl::identity<double>,
     boost::mpl::vector<boost::mpl::identity<float> >
@@ -30,7 +32,7 @@
   
   BOOST_MPL_ASSERT((tti::mf_has_static_member_function
                       <
- tti::HaveTheSIntFunction,
+ tti::HaveTheSIntFunction<_,_,_>,
                       boost::mpl::identity<AType>,
                       boost::mpl::identity<int>,
                       boost::mpl::vector
@@ -43,7 +45,7 @@
   
   BOOST_MPL_ASSERT((tti::mf_has_static_member_function
                       <
- tti::TheTIntFunction,
+ tti::TheTIntFunction<_,_,_>,
                       boost::mpl::identity<AnotherType>,
                       boost::mpl::identity<AType>,
                       boost::mpl::vector
@@ -56,7 +58,7 @@
   
   BOOST_MPL_ASSERT((tti::mf_has_static_member_function
                       <
- tti::has_static_member_function_TSFunction,
+ tti::has_static_member_function_TSFunction<_,_,_>,
                       boost::mpl::identity<AnotherType>,
                       tti::member_type_AStructType<AType>,
                       boost::mpl::vector

Modified: sandbox/tti/libs/tti/test/TestMFHasStaticFunctionFail.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasStaticFunctionFail.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasStaticFunctionFail.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,11 +4,13 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // SomeStaticFunction does not exist at all
   
   BOOST_MPL_ASSERT((tti::mf_has_static_member_function
                       <
- tti::Pickedname,
+ tti::Pickedname<_,_,_>,
                       boost::mpl::identity<AType>,
                       boost::mpl::identity<short>,
                       boost::mpl::vector

Modified: sandbox/tti/libs/tti/test/TestMFHasStaticFunctionFail2.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasStaticFunctionFail2.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasStaticFunctionFail2.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,11 +4,13 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // Wrong enclosing type
   
   BOOST_MPL_ASSERT((tti::mf_has_static_member_function
                       <
- tti::HaveTheSIntFunction,
+ tti::HaveTheSIntFunction<_,_,_>,
                       boost::mpl::identity<AnotherType>,
                       boost::mpl::identity<int>,
                       boost::mpl::vector

Modified: sandbox/tti/libs/tti/test/TestMFHasStaticFunctionFail3.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasStaticFunctionFail3.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasStaticFunctionFail3.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,11 +4,13 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // Wrong function parameter type
   
   BOOST_MPL_ASSERT((tti::mf_has_static_member_function
                       <
- tti::has_static_member_function_TSFunction,
+ tti::has_static_member_function_TSFunction<_,_,_>,
                       boost::mpl::identity<AnotherType>,
                       tti::member_type_AStructType<AType>,
                       boost::mpl::vector

Modified: sandbox/tti/libs/tti/test/TestMFHasTemplate.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasTemplate.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasTemplate.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,9 +4,11 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   BOOST_TEST((tti::mf_has_template
                 <
- tti::HaveMStr,
+ tti::HaveMStr<_>,
                 tti::member_type_AStructType<AType>
>
               ::value
@@ -14,7 +16,7 @@
   
   BOOST_TEST((!tti::mf_has_template
                 <
- tti::has_template_TemplateNotExist,
+ tti::has_template_TemplateNotExist<_>,
                 tti::MT_BType<AType>
>
               ::value
@@ -22,7 +24,7 @@
   
   BOOST_TEST((tti::mf_has_template
                 <
- tti::has_template_ATPMemberTemplate,
+ tti::has_template_ATPMemberTemplate<_>,
                 boost::mpl::identity<AType>
>
               ::value
@@ -30,7 +32,7 @@
   
   BOOST_TEST((tti::mf_has_template
                 <
- tti::HaveCL,
+ tti::HaveCL<_>,
                 boost::mpl::identity<AType>
>
               ::value
@@ -38,7 +40,7 @@
   
   BOOST_TEST((tti::mf_has_template
                 <
- tti::has_template_SimpleTMP,
+ tti::has_template_SimpleTMP<_>,
                 boost::mpl::identity<AnotherType>
>
               ::value

Modified: sandbox/tti/libs/tti/test/TestMFHasTemplateCheckParams.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasTemplateCheckParams.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasTemplateCheckParams.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,9 +4,11 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   BOOST_TEST((tti::mf_has_template_check_params
                 <
- tti::HT_Str,
+ tti::HT_Str<_>,
                 tti::member_type_AStructType<AType>
>
               ::value
@@ -14,7 +16,7 @@
   
   BOOST_TEST((tti::mf_has_template_check_params
                 <
- tti::has_template_check_params_AnotherMemberTemplate,
+ tti::has_template_check_params_AnotherMemberTemplate<_>,
                 boost::mpl::identity<AType>
>
               ::value
@@ -22,7 +24,7 @@
   
   BOOST_TEST((!tti::mf_has_template_check_params
                 <
- tti::WrongParametersForMP,
+ tti::WrongParametersForMP<_>,
                 boost::mpl::identity<AnotherType>
>
               ::value
@@ -30,10 +32,10 @@
   
   BOOST_TEST((tti::mf_has_template_check_params
                 <
- tti::has_template_check_params_CTManyParameters,
+ tti::has_template_check_params_CTManyParameters<_>,
                 tti::mf_member_type
                   <
- tti::member_type_CType,
+ tti::member_type_CType<_>,
                   tti::MT_BType<AType>
>
>
@@ -42,10 +44,10 @@
   
   BOOST_TEST((!tti::mf_has_template_check_params
                 <
- tti::has_template_check_params_TemplateNotExist,
+ tti::has_template_check_params_TemplateNotExist<_>,
                 tti::mf_member_type
                   <
- tti::member_type_CType,
+ tti::member_type_CType<_>,
                   tti::MT_BType<AType>
>
>

Modified: sandbox/tti/libs/tti/test/TestMFHasTemplateCheckParamsCompile.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasTemplateCheckParamsCompile.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasTemplateCheckParamsCompile.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,14 +4,16 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // You can always instantiate without compiler errors
   
   tti::mf_has_template_check_params
                 <
- tti::has_template_check_params_TemplateNotExist,
+ tti::has_template_check_params_TemplateNotExist<_>,
                 tti::mf_member_type
                   <
- tti::member_type_CType,
+ tti::member_type_CType<_>,
                   tti::MT_BType<AType>
>
> aVar;
@@ -20,24 +22,24 @@
   
   BOOST_MPL_ASSERT((tti::mf_has_template_check_params
                       <
- tti::HT_Str,
+ tti::HT_Str<_>,
                       tti::member_type_AStructType<AType>
>
                   ));
   
   BOOST_MPL_ASSERT((tti::mf_has_template_check_params
                       <
- tti::has_template_check_params_AnotherMemberTemplate,
+ tti::has_template_check_params_AnotherMemberTemplate<_>,
                       boost::mpl::identity<AType>
>
                   ));
   
   BOOST_MPL_ASSERT((tti::mf_has_template_check_params
                       <
- tti::has_template_check_params_CTManyParameters,
+ tti::has_template_check_params_CTManyParameters<_>,
                       tti::mf_member_type
                         <
- tti::member_type_CType,
+ tti::member_type_CType<_>,
                         tti::MT_BType<AType>
>
>

Modified: sandbox/tti/libs/tti/test/TestMFHasTemplateCheckParamsFail.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasTemplateCheckParamsFail.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasTemplateCheckParamsFail.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,14 +4,16 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // Template does not exist
   
   BOOST_MPL_ASSERT((tti::mf_has_template_check_params
                       <
- tti::has_template_check_params_TemplateNotExist,
+ tti::has_template_check_params_TemplateNotExist<_>,
                       tti::mf_member_type
                         <
- tti::member_type_CType,
+ tti::member_type_CType<_>,
                         tti::MT_BType<AType>
>
>

Modified: sandbox/tti/libs/tti/test/TestMFHasTemplateCheckParamsFail2.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasTemplateCheckParamsFail2.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasTemplateCheckParamsFail2.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,14 +4,16 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // Wrong enclosing type
   
   BOOST_MPL_ASSERT((tti::mf_has_template_check_params
                       <
- tti::has_template_check_params_CTManyParameters,
+ tti::has_template_check_params_CTManyParameters<_>,
                       tti::mf_member_type
                         <
- tti::member_type_CType,
+ tti::member_type_CType<_>,
                         boost::mpl::identity<AType>
>
>

Modified: sandbox/tti/libs/tti/test/TestMFHasTemplateCheckParamsFail3.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasTemplateCheckParamsFail3.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasTemplateCheckParamsFail3.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,11 +4,13 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // Wrong template types
   
   BOOST_MPL_ASSERT((tti::mf_has_template_check_params
                       <
- tti::WrongParametersForMP,
+ tti::WrongParametersForMP<_>,
                       boost::mpl::identity<AnotherType>
>
                   ));

Modified: sandbox/tti/libs/tti/test/TestMFHasTemplateCompile.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasTemplateCompile.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasTemplateCompile.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,17 +4,19 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // You can always instantiate without compiler errors
   
   tti::mf_has_template
     <
- tti::has_template_TemplateNotExist,
+ tti::has_template_TemplateNotExist<_>,
     tti::MT_BType<AType>
> aVar;
     
   tti::mf_has_template
     <
- tti::has_template_ATPMemberTemplate,
+ tti::has_template_ATPMemberTemplate<_>,
     boost::mpl::identity<AnotherType>
> aVar2;
   
@@ -22,28 +24,28 @@
   
   BOOST_MPL_ASSERT((tti::mf_has_template
                       <
- tti::HaveMStr,
+ tti::HaveMStr<_>,
                       tti::member_type_AStructType<AType>
>
                   ));
   
   BOOST_MPL_ASSERT((tti::mf_has_template
                       <
- tti::has_template_ATPMemberTemplate,
+ tti::has_template_ATPMemberTemplate<_>,
                       boost::mpl::identity<AType>
>
                   ));
   
   BOOST_MPL_ASSERT((tti::mf_has_template
                       <
- tti::HaveCL,
+ tti::HaveCL<_>,
                       boost::mpl::identity<AType>
>
                   ));
   
   BOOST_MPL_ASSERT((tti::mf_has_template
                       <
- tti::has_template_SimpleTMP,
+ tti::has_template_SimpleTMP<_>,
                       boost::mpl::identity<AnotherType>
>
                   ));

Modified: sandbox/tti/libs/tti/test/TestMFHasTemplateFail.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasTemplateFail.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasTemplateFail.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,11 +4,13 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // TemplateNotExist does not exist at all
   
   BOOST_MPL_ASSERT((tti::mf_has_template
                       <
- tti::has_template_TemplateNotExist,
+ tti::has_template_TemplateNotExist<_>,
                       tti::MT_BType<AType>
>
                   ));

Modified: sandbox/tti/libs/tti/test/TestMFHasTemplateFail2.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasTemplateFail2.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasTemplateFail2.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,11 +4,13 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // Wrong enclosing type
   
   BOOST_MPL_ASSERT((tti::mf_has_template
                       <
- tti::HaveMStr,
+ tti::HaveMStr<_>,
                       tti::member_type_AStructType<AnotherType>
>
                   ));

Modified: sandbox/tti/libs/tti/test/TestMFHasTemplateFail3.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasTemplateFail3.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasTemplateFail3.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,11 +4,13 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // Too many 'typename' parameters
   
   BOOST_MPL_ASSERT((tti::mf_has_template
                       <
- tti::has_template_SomeMemberTemplate,
+ tti::has_template_SomeMemberTemplate<_>,
                       boost::mpl::identity<AnotherType>
>
                   ));

Modified: sandbox/tti/libs/tti/test/TestMFHasTemplateFail4.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasTemplateFail4.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasTemplateFail4.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,11 +4,13 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // Not all 'typename' parameters
   
   BOOST_MPL_ASSERT((tti::mf_has_template
                       <
- tti::AMT,
+ tti::AMT<_>,
                       boost::mpl::identity<AType>
>
                   ));

Modified: sandbox/tti/libs/tti/test/TestMFHasType.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasType.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasType.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,9 +4,11 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   BOOST_TEST((tti::mf_has_type
                 <
- tti::has_type_AnIntType,
+ tti::has_type_AnIntType<_>,
                 boost::mpl::identity<AType>
>
               ::value
@@ -14,7 +16,7 @@
             
   BOOST_TEST((tti::mf_has_type
                 <
- tti::NameStruct,
+ tti::NameStruct<_>,
                 boost::mpl::identity<AType>
>
               ::value
@@ -22,7 +24,7 @@
   
   BOOST_TEST((tti::mf_has_type
                 <
- tti::has_type_AnIntTypeReference,
+ tti::has_type_AnIntTypeReference<_>,
                 boost::mpl::identity<AType>
>
               ::value
@@ -30,7 +32,7 @@
   
   BOOST_TEST((tti::mf_has_type
                 <
- tti::has_type_BType,
+ tti::has_type_BType<_>,
                 boost::mpl::identity<AType>
>
               ::value
@@ -38,7 +40,7 @@
   
   BOOST_TEST((tti::mf_has_type
                 <
- tti::TheInteger,
+ tti::TheInteger<_>,
                 tti::member_type_BType<AType>
>
               ::value
@@ -46,7 +48,7 @@
   
   BOOST_TEST((tti::mf_has_type
                 <
- tti::has_type_CType,
+ tti::has_type_CType<_>,
                 tti::member_type_BType<AType>
>
               ::value
@@ -54,10 +56,10 @@
   
   BOOST_TEST((tti::mf_has_type
                 <
- tti::has_type_AnotherIntegerType,
+ tti::has_type_AnotherIntegerType<_>,
                 tti::mf_member_type
                   <
- tti::member_type_CType,
+ tti::member_type_CType<_>,
                   tti::member_type_BType<AType>
>
>
@@ -66,7 +68,7 @@
   
   BOOST_TEST((tti::mf_has_type
                 <
- tti::SomethingElse,
+ tti::SomethingElse<_>,
                 boost::mpl::identity<AnotherType>
>
               ::value

Modified: sandbox/tti/libs/tti/test/TestMFHasTypeCheckTypedef.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasTypeCheckTypedef.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasTypeCheckTypedef.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,9 +4,11 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   BOOST_TEST((tti::mf_has_type
                 <
- tti::has_type_AnIntType,
+ tti::has_type_AnIntType<_,_>,
                 boost::mpl::identity<AType>,
                 boost::mpl::identity<int>
>
@@ -15,7 +17,7 @@
             
   BOOST_TEST((tti::mf_has_type
                 <
- tti::NameStruct,
+ tti::NameStruct<_,_>,
                 boost::mpl::identity<AType>,
                 tti::member_type_AStructType<AType>
>
@@ -24,7 +26,7 @@
             
   BOOST_TEST((tti::mf_has_type
                 <
- tti::has_type_AnIntTypeReference,
+ tti::has_type_AnIntTypeReference<_,_>,
                 boost::mpl::identity<AType>,
                 boost::mpl::identity<int &>
>
@@ -33,7 +35,7 @@
             
   BOOST_TEST((tti::mf_has_type
                 <
- tti::has_type_BType,
+ tti::has_type_BType<_,_>,
                 boost::mpl::identity<AType>,
                 tti::member_type_BType<AType>
>
@@ -42,7 +44,7 @@
             
   BOOST_TEST((tti::mf_has_type
                 <
- tti::TheInteger,
+ tti::TheInteger<_,_>,
                 tti::member_type_BType<AType>,
                 boost::mpl::identity<int>
>
@@ -51,11 +53,11 @@
             
   BOOST_TEST((tti::mf_has_type
                 <
- tti::has_type_CType,
+ tti::has_type_CType<_,_>,
                 tti::member_type_BType<AType>,
                 tti::mf_member_type
                   <
- tti::member_type_CType,
+ tti::member_type_CType<_>,
                   tti::member_type_BType<AType>
>
>
@@ -64,10 +66,10 @@
             
   BOOST_TEST((tti::mf_has_type
                 <
- tti::has_type_AnotherIntegerType,
+ tti::has_type_AnotherIntegerType<_,_>,
                 tti::mf_member_type
                   <
- tti::member_type_CType,
+ tti::member_type_CType<_>,
                   tti::member_type_BType<AType>
>,
                 boost::mpl::identity<int>
@@ -77,7 +79,7 @@
             
   BOOST_TEST((tti::mf_has_type
                 <
- tti::SomethingElse,
+ tti::SomethingElse<_,_>,
                 boost::mpl::identity<AnotherType>,
                 tti::member_type_AnIntType<AType>
>
@@ -86,7 +88,7 @@
             
   BOOST_TEST((!tti::mf_has_type
                 <
- tti::has_type_NoOtherType,
+ tti::has_type_NoOtherType<_,_>,
                 boost::mpl::identity<AnotherType>,
                 boost::mpl::identity<double>
>

Modified: sandbox/tti/libs/tti/test/TestMFHasTypeCheckTypedefCompile.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasTypeCheckTypedefCompile.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasTypeCheckTypedefCompile.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,18 +4,20 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // You can always instantiate without compiler errors
   
   tti::mf_has_type
     <
- tti::TheInteger,
+ tti::TheInteger<_,_>,
     tti::member_type_BType<AnotherType>,
     boost::mpl::identity<long>
> aVar;
     
   tti::mf_has_type
     <
- tti::has_type_NoOtherType,
+ tti::has_type_NoOtherType<_,_>,
     boost::mpl::identity<AType>,
     boost::mpl::identity<float>
> aVar2;
@@ -24,7 +26,7 @@
   
   BOOST_MPL_ASSERT((tti::mf_has_type
                 <
- tti::has_type_AnIntType,
+ tti::has_type_AnIntType<_,_>,
                 boost::mpl::identity<AType>,
                 boost::mpl::identity<int>
>
@@ -32,7 +34,7 @@
             
   BOOST_MPL_ASSERT((tti::mf_has_type
                 <
- tti::NameStruct,
+ tti::NameStruct<_,_>,
                 boost::mpl::identity<AType>,
                 tti::member_type_AStructType<AType>
>
@@ -40,7 +42,7 @@
             
   BOOST_MPL_ASSERT((tti::mf_has_type
                 <
- tti::has_type_AnIntTypeReference,
+ tti::has_type_AnIntTypeReference<_,_>,
                 boost::mpl::identity<AType>,
                 boost::mpl::identity<int &>
>
@@ -48,7 +50,7 @@
             
   BOOST_MPL_ASSERT((tti::mf_has_type
                 <
- tti::has_type_BType,
+ tti::has_type_BType<_,_>,
                 boost::mpl::identity<AType>,
                 tti::member_type_BType<AType>
>
@@ -56,7 +58,7 @@
             
   BOOST_MPL_ASSERT((tti::mf_has_type
                 <
- tti::TheInteger,
+ tti::TheInteger<_,_>,
                 tti::member_type_BType<AType>,
                 boost::mpl::identity<int>
>
@@ -64,11 +66,11 @@
             
   BOOST_MPL_ASSERT((tti::mf_has_type
                 <
- tti::has_type_CType,
+ tti::has_type_CType<_,_>,
                 tti::member_type_BType<AType>,
                 tti::mf_member_type
                   <
- tti::member_type_CType,
+ tti::member_type_CType<_>,
                   tti::member_type_BType<AType>
>
>
@@ -76,10 +78,10 @@
             
   BOOST_MPL_ASSERT((tti::mf_has_type
                 <
- tti::has_type_AnotherIntegerType,
+ tti::has_type_AnotherIntegerType<_,_>,
                 tti::mf_member_type
                   <
- tti::member_type_CType,
+ tti::member_type_CType<_>,
                   tti::member_type_BType<AType>
>,
                 boost::mpl::identity<int>
@@ -88,7 +90,7 @@
             
   BOOST_MPL_ASSERT((tti::mf_has_type
                 <
- tti::SomethingElse,
+ tti::SomethingElse<_,_>,
                 boost::mpl::identity<AnotherType>,
                 tti::member_type_AnIntType<AType>
>

Modified: sandbox/tti/libs/tti/test/TestMFHasTypeCheckTypedefFail.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasTypeCheckTypedefFail.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasTypeCheckTypedefFail.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,11 +4,13 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // NoOtherType does not exist at all
   
   BOOST_MPL_ASSERT((tti::mf_has_type
                       <
- tti::has_type_NoOtherType,
+ tti::has_type_NoOtherType<_,_>,
                       boost::mpl::identity<AnotherType>,
                       boost::mpl::identity<float>
>

Modified: sandbox/tti/libs/tti/test/TestMFHasTypeCheckTypedefFail2.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasTypeCheckTypedefFail2.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasTypeCheckTypedefFail2.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,11 +4,13 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // Wrong enclosing type
   
   BOOST_MPL_ASSERT((tti::mf_has_type
                       <
- tti::has_type_BType,
+ tti::has_type_BType<_,_>,
                       boost::mpl::identity<AnotherType>,
                       tti::member_type_BType<AType>
>

Modified: sandbox/tti/libs/tti/test/TestMFHasTypeCheckTypedefFail3.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasTypeCheckTypedefFail3.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasTypeCheckTypedefFail3.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,11 +4,13 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // Wrong typedef type
   
   BOOST_MPL_ASSERT((tti::mf_has_type
                       <
- tti::TheInteger,
+ tti::TheInteger<_,_>,
                       tti::member_type_BType<AType>,
                       boost::mpl::identity<long>
>

Modified: sandbox/tti/libs/tti/test/TestMFHasTypeCompile.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasTypeCompile.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasTypeCompile.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,17 +4,19 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // You can always instantiate without compiler errors
   
   tti::mf_has_type
     <
- tti::has_type_AnIntType,
+ tti::has_type_AnIntType<_>,
     boost::mpl::identity<AnotherType>
> aVar;
   
   tti::mf_has_type
     <
- tti::has_type_NoOtherType,
+ tti::has_type_NoOtherType<_>,
     boost::mpl::identity<AnotherType>
> aVar2;
   
@@ -22,52 +24,52 @@
   
   BOOST_MPL_ASSERT((tti::mf_has_type
                       <
- tti::has_type_AnIntType,
+ tti::has_type_AnIntType<_>,
                       boost::mpl::identity<AType>
>
                   ));
             
   BOOST_MPL_ASSERT((tti::mf_has_type
                       <
- tti::NameStruct,
+ tti::NameStruct<_>,
                       boost::mpl::identity<AType>
>
                   ));
   
   BOOST_MPL_ASSERT((tti::mf_has_type
                       <
- tti::has_type_AnIntTypeReference,
+ tti::has_type_AnIntTypeReference<_>,
                       boost::mpl::identity<AType>
>
                   ));
   
   BOOST_MPL_ASSERT((tti::mf_has_type
                       <
- tti::has_type_BType,
+ tti::has_type_BType<_>,
                       boost::mpl::identity<AType>
>
                   ));
   
   BOOST_MPL_ASSERT((tti::mf_has_type
                       <
- tti::TheInteger,
+ tti::TheInteger<_>,
                       tti::member_type_BType<AType>
>
                   ));
   
   BOOST_MPL_ASSERT((tti::mf_has_type
                       <
- tti::has_type_CType,
+ tti::has_type_CType<_>,
                       tti::member_type_BType<AType>
>
                   ));
   
   BOOST_MPL_ASSERT((tti::mf_has_type
                       <
- tti::has_type_AnotherIntegerType,
+ tti::has_type_AnotherIntegerType<_>,
                       tti::mf_member_type
                         <
- tti::member_type_CType,
+ tti::member_type_CType<_>,
                         tti::member_type_BType<AType>
>
>
@@ -75,7 +77,7 @@
   
   BOOST_MPL_ASSERT((tti::mf_has_type
                       <
- tti::SomethingElse,
+ tti::SomethingElse<_>,
                       boost::mpl::identity<AnotherType>
>
                   ));

Modified: sandbox/tti/libs/tti/test/TestMFHasTypeFail.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasTypeFail.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasTypeFail.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,11 +4,13 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // NoOtherType does not exist at all
   
   BOOST_MPL_ASSERT((tti::mf_has_type
                       <
- tti::has_type_NoOtherType,
+ tti::has_type_NoOtherType<_>,
                       boost::mpl::identity<AType>
>
                   ));

Modified: sandbox/tti/libs/tti/test/TestMFHasTypeFail2.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFHasTypeFail2.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFHasTypeFail2.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,11 +4,13 @@
 int main()
   {
   
+ using namespace boost::mpl::placeholders;
+
   // Wrong enclosing type
   
   BOOST_MPL_ASSERT((tti::mf_has_type
                       <
- tti::has_type_AnIntType,
+ tti::has_type_AnIntType<_>,
                       boost::mpl::identity<AnotherType>
>
                   ));

Modified: sandbox/tti/libs/tti/test/TestMFMemberType.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFMemberType.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFMemberType.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,72 +4,98 @@
 int main()
   {
   
- BOOST_TEST((tti::mf_member_type
+ using namespace boost::mpl::placeholders;
+
+ BOOST_TEST((tti::mf_valid_member_type
                 <
- tti::member_type_AnIntType,
- boost::mpl::identity<AType>
+ tti::mf_member_type
+ <
+ tti::member_type_AnIntType<_>,
+ boost::mpl::identity<AType>
+ >
>
- ::valid
+ ::value
             ));
             
- BOOST_TEST((tti::mf_member_type
+ BOOST_TEST((tti::mf_valid_member_type
                 <
- tti::NameStruct,
- boost::mpl::identity<AType>
+ tti::mf_member_type
+ <
+ tti::NameStruct<_>,
+ boost::mpl::identity<AType>
+ >
>
- ::valid
+ ::value
             ));
             
- BOOST_TEST((tti::mf_member_type
+ BOOST_TEST((tti::mf_valid_member_type
                 <
- tti::member_type_AnIntTypeReference,
- boost::mpl::identity<AType>
+ tti::mf_member_type
+ <
+ tti::member_type_AnIntTypeReference<_>,
+ boost::mpl::identity<AType>
+ >
>
- ::valid
+ ::value
             ));
             
- BOOST_TEST((tti::mf_member_type
+ BOOST_TEST((tti::mf_valid_member_type
                 <
- tti::member_type_BType,
- boost::mpl::identity<AType>
+ tti::mf_member_type
+ <
+ tti::member_type_BType<_>,
+ boost::mpl::identity<AType>
+ >
>
- ::valid
+ ::value
             ));
             
- BOOST_TEST((tti::mf_member_type
+ BOOST_TEST((tti::mf_valid_member_type
                 <
- tti::TheInteger,
- tti::member_type_BType<AType>
+ tti::mf_member_type
+ <
+ tti::TheInteger<_>,
+ tti::member_type_BType<AType>
+ >
>
- ::valid
+ ::value
             ));
             
- BOOST_TEST((tti::mf_member_type
+ BOOST_TEST((tti::mf_valid_member_type
                 <
- tti::member_type_CType,
- tti::member_type_BType<AType>
+ tti::mf_member_type
+ <
+ tti::member_type_CType<_>,
+ tti::member_type_BType<AType>
+ >
>
- ::valid
+ ::value
             ));
             
- BOOST_TEST((tti::mf_member_type
+ BOOST_TEST((tti::mf_valid_member_type
                 <
- tti::member_type_AnotherIntegerType,
                 tti::mf_member_type
                   <
- tti::member_type_CType,
- tti::member_type_BType<AType>
+ tti::member_type_AnotherIntegerType<_>,
+ tti::mf_member_type
+ <
+ tti::member_type_CType<_>,
+ tti::member_type_BType<AType>
+ >
>
>
- ::valid
+ ::value
             ));
             
- BOOST_TEST((tti::mf_member_type
+ BOOST_TEST((tti::mf_valid_member_type
                 <
- tti::SomethingElse,
- boost::mpl::identity<AnotherType>
+ tti::mf_member_type
+ <
+ tti::SomethingElse<_>,
+ boost::mpl::identity<AnotherType>
+ >
>
- ::valid
+ ::value
             ));
   
   return boost::report_errors();

Modified: sandbox/tti/libs/tti/test/TestMFMemberTypeCompile.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMFMemberTypeCompile.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMFMemberTypeCompile.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -1,99 +1,92 @@
 #include "TestMFMemberType.hpp"
 #include <boost/mpl/assert.hpp>
-#include <boost/mpl/bool.hpp>
 
 int main()
   {
   
- BOOST_MPL_ASSERT((boost::mpl::bool_
+ using namespace boost::mpl::placeholders;
+
+ BOOST_MPL_ASSERT((tti::mf_valid_member_type
                       <
                       tti::mf_member_type
                         <
- tti::member_type_AnIntType,
+ tti::member_type_AnIntType<_>,
                         boost::mpl::identity<AType>
>
- ::valid
>
                   ));
             
- BOOST_MPL_ASSERT((boost::mpl::bool_
+ BOOST_MPL_ASSERT((tti::mf_valid_member_type
                       <
                       tti::mf_member_type
                         <
- tti::NameStruct,
+ tti::NameStruct<_>,
                         boost::mpl::identity<AType>
>
- ::valid
>
                   ));
             
- BOOST_MPL_ASSERT((boost::mpl::bool_
+ BOOST_MPL_ASSERT((tti::mf_valid_member_type
                       <
                       tti::mf_member_type
                         <
- tti::member_type_AnIntTypeReference,
+ tti::member_type_AnIntTypeReference<_>,
                         boost::mpl::identity<AType>
>
- ::valid
>
                   ));
             
- BOOST_MPL_ASSERT((boost::mpl::bool_
+ BOOST_MPL_ASSERT((tti::mf_valid_member_type
                       <
                       tti::mf_member_type
                         <
- tti::member_type_BType,
+ tti::member_type_BType<_>,
                         boost::mpl::identity<AType>
>
- ::valid
>
                   ));
             
- BOOST_MPL_ASSERT((boost::mpl::bool_
+ BOOST_MPL_ASSERT((tti::mf_valid_member_type
                       <
                       tti::mf_member_type
                         <
- tti::TheInteger,
+ tti::TheInteger<_>,
                         tti::member_type_BType<AType>
>
- ::valid
>
                   ));
             
- BOOST_MPL_ASSERT((boost::mpl::bool_
+ BOOST_MPL_ASSERT((tti::mf_valid_member_type
                       <
                       tti::mf_member_type
                         <
- tti::member_type_CType,
+ tti::member_type_CType<_>,
                         tti::member_type_BType<AType>
>
- ::valid
>
                   ));
             
- BOOST_MPL_ASSERT((boost::mpl::bool_
+ BOOST_MPL_ASSERT((tti::mf_valid_member_type
                       <
                       tti::mf_member_type
                         <
- tti::member_type_AnotherIntegerType,
+ tti::member_type_AnotherIntegerType<_>,
                         tti::mf_member_type
                           <
- tti::member_type_CType,
+ tti::member_type_CType<_>,
                           tti::member_type_BType<AType>
>
>
- ::valid
>
                   ));
             
- BOOST_MPL_ASSERT((boost::mpl::bool_
+ BOOST_MPL_ASSERT((tti::mf_valid_member_type
                       <
                       tti::mf_member_type
                         <
- tti::SomethingElse,
+ tti::SomethingElse<_>,
                         boost::mpl::identity<AnotherType>
>
- ::valid
>
                   ));
   

Modified: sandbox/tti/libs/tti/test/TestMemberType.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMemberType.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMemberType.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -4,14 +4,14 @@
 int main()
   {
   
- BOOST_TEST(tti::member_type_AnIntType<AType>::valid);
- BOOST_TEST(tti::NameStruct<AType>::valid);
- BOOST_TEST(tti::member_type_AnIntTypeReference<AType>::valid);
- BOOST_TEST(tti::member_type_BType<AType>::valid);
- BOOST_TEST(tti::TheInteger<AType::BType>::valid);
- BOOST_TEST(tti::member_type_CType<AType::BType>::valid);
- BOOST_TEST(tti::member_type_AnotherIntegerType<AType::BType::CType>::valid);
- BOOST_TEST(tti::SomethingElse<AnotherType>::valid);
+ BOOST_TEST(tti::mf_valid_member_type<tti::member_type_AnIntType<AType> >::value);
+ BOOST_TEST(tti::mf_valid_member_type<tti::NameStruct<AType> >::value);
+ BOOST_TEST(tti::mf_valid_member_type<tti::member_type_AnIntTypeReference<AType> >::value);
+ BOOST_TEST(tti::mf_valid_member_type<tti::member_type_BType<AType> >::value);
+ BOOST_TEST(tti::mf_valid_member_type<tti::TheInteger<AType::BType> >::value);
+ BOOST_TEST(tti::mf_valid_member_type<tti::member_type_CType<AType::BType> >::value);
+ BOOST_TEST(tti::mf_valid_member_type<tti::member_type_AnotherIntegerType<AType::BType::CType> >::value);
+ BOOST_TEST(tti::mf_valid_member_type<tti::SomethingElse<AnotherType> >::value);
   
   return boost::report_errors();
 

Modified: sandbox/tti/libs/tti/test/TestMemberTypeCompile.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestMemberTypeCompile.cpp (original)
+++ sandbox/tti/libs/tti/test/TestMemberTypeCompile.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -1,18 +1,17 @@
 #include "TestMemberType.hpp"
 #include <boost/mpl/assert.hpp>
-#include <boost/mpl/bool.hpp>
 
 int main()
   {
   
- BOOST_MPL_ASSERT((boost::mpl::bool_<tti::member_type_AnIntType<AType>::valid>));
- BOOST_MPL_ASSERT((boost::mpl::bool_<tti::NameStruct<AType>::valid>));
- BOOST_MPL_ASSERT((boost::mpl::bool_<tti::member_type_AnIntTypeReference<AType>::valid>));
- BOOST_MPL_ASSERT((boost::mpl::bool_<tti::member_type_BType<AType>::valid>));
- BOOST_MPL_ASSERT((boost::mpl::bool_<tti::TheInteger<AType::BType>::valid>));
- BOOST_MPL_ASSERT((boost::mpl::bool_<tti::member_type_CType<AType::BType>::valid>));
- BOOST_MPL_ASSERT((boost::mpl::bool_<tti::member_type_AnotherIntegerType<AType::BType::CType>::valid>));
- BOOST_MPL_ASSERT((boost::mpl::bool_<tti::SomethingElse<AnotherType>::valid>));
+ BOOST_MPL_ASSERT((tti::mf_valid_member_type<tti::member_type_AnIntType<AType> >));
+ BOOST_MPL_ASSERT((tti::mf_valid_member_type<tti::NameStruct<AType> >));
+ BOOST_MPL_ASSERT((tti::mf_valid_member_type<tti::member_type_AnIntTypeReference<AType> >));
+ BOOST_MPL_ASSERT((tti::mf_valid_member_type<tti::member_type_BType<AType> >));
+ BOOST_MPL_ASSERT((tti::mf_valid_member_type<tti::TheInteger<AType::BType> >));
+ BOOST_MPL_ASSERT((tti::mf_valid_member_type<tti::member_type_CType<AType::BType> >));
+ BOOST_MPL_ASSERT((tti::mf_valid_member_type<tti::member_type_AnotherIntegerType<AType::BType::CType> >));
+ BOOST_MPL_ASSERT((tti::mf_valid_member_type<tti::SomethingElse<AnotherType> >));
   
   return 0;
 

Modified: sandbox/tti/libs/tti/test/TestVMMFHasTemplateCheckParams.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestVMMFHasTemplateCheckParams.cpp (original)
+++ sandbox/tti/libs/tti/test/TestVMMFHasTemplateCheckParams.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -6,9 +6,11 @@
   
 #if !defined(BOOST_NO_VARIADIC_MACROS)
 
+ using namespace boost::mpl::placeholders;
+
   BOOST_TEST((tti::mf_has_template_check_params
                 <
- tti::HT_Str,
+ tti::HT_Str<_>,
                 tti::member_type_AStructType<AType>
>
               ::value
@@ -16,7 +18,7 @@
   
   BOOST_TEST((tti::mf_has_template_check_params
                 <
- tti::has_template_check_params_AnotherMemberTemplate,
+ tti::has_template_check_params_AnotherMemberTemplate<_>,
                 boost::mpl::identity<AType>
>
               ::value
@@ -24,7 +26,7 @@
   
   BOOST_TEST((!tti::mf_has_template_check_params
                 <
- tti::WrongParametersForMP,
+ tti::WrongParametersForMP<_>,
                 boost::mpl::identity<AnotherType>
>
               ::value
@@ -32,10 +34,10 @@
   
   BOOST_TEST((tti::mf_has_template_check_params
                 <
- tti::has_template_check_params_CTManyParameters,
+ tti::has_template_check_params_CTManyParameters<_>,
                 tti::mf_member_type
                   <
- tti::member_type_CType,
+ tti::member_type_CType<_>,
                   tti::MT_BType<AType>
>
>
@@ -44,10 +46,10 @@
   
   BOOST_TEST((!tti::mf_has_template_check_params
                 <
- tti::has_template_check_params_TemplateNotExist,
+ tti::has_template_check_params_TemplateNotExist<_>,
                 tti::mf_member_type
                   <
- tti::member_type_CType,
+ tti::member_type_CType<_>,
                   tti::MT_BType<AType>
>
>

Modified: sandbox/tti/libs/tti/test/TestVMMFHasTemplateCheckParamsCompile.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestVMMFHasTemplateCheckParamsCompile.cpp (original)
+++ sandbox/tti/libs/tti/test/TestVMMFHasTemplateCheckParamsCompile.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -6,14 +6,16 @@
   
 #if !defined(BOOST_NO_VARIADIC_MACROS)
 
+ using namespace boost::mpl::placeholders;
+
   // You can always instantiate without compiler errors
   
   tti::mf_has_template_check_params
                 <
- tti::has_template_check_params_TemplateNotExist,
+ tti::has_template_check_params_TemplateNotExist<_>,
                 tti::mf_member_type
                   <
- tti::member_type_CType,
+ tti::member_type_CType<_>,
                   tti::MT_BType<AType>
>
> aVar;
@@ -22,24 +24,24 @@
   
   BOOST_MPL_ASSERT((tti::mf_has_template_check_params
                       <
- tti::HT_Str,
+ tti::HT_Str<_>,
                       tti::member_type_AStructType<AType>
>
                   ));
   
   BOOST_MPL_ASSERT((tti::mf_has_template_check_params
                       <
- tti::has_template_check_params_AnotherMemberTemplate,
+ tti::has_template_check_params_AnotherMemberTemplate<_>,
                       boost::mpl::identity<AType>
>
                   ));
   
   BOOST_MPL_ASSERT((tti::mf_has_template_check_params
                       <
- tti::has_template_check_params_CTManyParameters,
+ tti::has_template_check_params_CTManyParameters<_>,
                       tti::mf_member_type
                         <
- tti::member_type_CType,
+ tti::member_type_CType<_>,
                         tti::MT_BType<AType>
>
>

Modified: sandbox/tti/libs/tti/test/TestVMMFHasTemplateCheckParamsFail.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestVMMFHasTemplateCheckParamsFail.cpp (original)
+++ sandbox/tti/libs/tti/test/TestVMMFHasTemplateCheckParamsFail.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -6,14 +6,16 @@
   
 #if !defined(BOOST_NO_VARIADIC_MACROS)
 
+ using namespace boost::mpl::placeholders;
+
   // Template does not exist
   
   BOOST_MPL_ASSERT((tti::mf_has_template_check_params
                       <
- tti::has_template_check_params_TemplateNotExist,
+ tti::has_template_check_params_TemplateNotExist<_>,
                       tti::mf_member_type
                         <
- tti::member_type_CType,
+ tti::member_type_CType<_>,
                         tti::MT_BType<AType>
>
>

Modified: sandbox/tti/libs/tti/test/TestVMMFHasTemplateCheckParamsFail2.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestVMMFHasTemplateCheckParamsFail2.cpp (original)
+++ sandbox/tti/libs/tti/test/TestVMMFHasTemplateCheckParamsFail2.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -6,14 +6,16 @@
   
 #if !defined(BOOST_NO_VARIADIC_MACROS)
 
+ using namespace boost::mpl::placeholders;
+
   // Wrong enclosing type
   
   BOOST_MPL_ASSERT((tti::mf_has_template_check_params
                       <
- tti::has_template_check_params_CTManyParameters,
+ tti::has_template_check_params_CTManyParameters<_>,
                       tti::mf_member_type
                         <
- tti::member_type_CType,
+ tti::member_type_CType<_>,
                         boost::mpl::identity<AType>
>
>

Modified: sandbox/tti/libs/tti/test/TestVMMFHasTemplateCheckParamsFail3.cpp
==============================================================================
--- sandbox/tti/libs/tti/test/TestVMMFHasTemplateCheckParamsFail3.cpp (original)
+++ sandbox/tti/libs/tti/test/TestVMMFHasTemplateCheckParamsFail3.cpp 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -6,11 +6,13 @@
   
 #if !defined(BOOST_NO_VARIADIC_MACROS)
 
+ using namespace boost::mpl::placeholders;
+
   // Wrong template types
   
   BOOST_MPL_ASSERT((tti::mf_has_template_check_params
                       <
- tti::WrongParametersForMP,
+ tti::WrongParametersForMP<_>,
                       boost::mpl::identity<AnotherType>
>
                   ));

Modified: sandbox/tti/readme.txt
==============================================================================
--- sandbox/tti/readme.txt (original)
+++ sandbox/tti/readme.txt 2011-02-06 11:29:00 EST (Sun, 06 Feb 2011)
@@ -12,7 +12,9 @@
 
 If you want to contact me directly, my name is
 Edward Diener and you can reach me at
-eld_at_tropicsoft.com. You can also of course
-use the Boost newsgroups to ask questions
-and make comments or suggestions about the
-library.
+eld_at_tropicsoft.com. I am an independent computer
+consultant and I live in Atlanta, Georgia.
+
+You can also of course use the Boost newsgroups
+to ask questions and make comments or suggestions
+about the library.


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