|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r81683 - in trunk: boost/tti boost/tti/detail libs/tti/test
From: eldiener_at_[hidden]
Date: 2012-12-03 00:13:46
Author: eldiener
Date: 2012-12-03 00:13:45 EST (Mon, 03 Dec 2012)
New Revision: 81683
URL: http://svn.boost.org/trac/boost/changeset/81683
Log:
Changes to has type functionality.
Added:
trunk/boost/tti/detail/dlambda.hpp (contents, props changed)
trunk/boost/tti/detail/dplaceholder.hpp (contents, props changed)
Text files modified:
trunk/boost/tti/detail/dmetafunc.hpp | 3
trunk/boost/tti/detail/dtype.hpp | 41 ++----------
trunk/boost/tti/has_type.hpp | 126 +++++++++++++--------------------------
trunk/libs/tti/test/test_has_type_ct.cpp | 21 +++--
trunk/libs/tti/test/test_has_type_ct_compile.cpp | 23 ++++---
trunk/libs/tti/test/test_has_type_ct_fail.cpp | 5 +
trunk/libs/tti/test/test_has_type_ct_fail2.cpp | 5 +
trunk/libs/tti/test/test_has_type_ct_fail3.cpp | 5 +
trunk/libs/tti/test/test_has_type_ct_fail4.cpp | 5 +
trunk/libs/tti/test/test_has_type_ct_fail5.cpp | 5 +
10 files changed, 96 insertions(+), 143 deletions(-)
Added: trunk/boost/tti/detail/dlambda.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/tti/detail/dlambda.hpp 2012-12-03 00:13:45 EST (Mon, 03 Dec 2012)
@@ -0,0 +1,34 @@
+
+// (C) Copyright Edward Diener 2012
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+#if !defined(BOOST_TTI_DETAIL_LAMBDA_HPP)
+#define BOOST_TTI_DETAIL_LAMBDA_HPP
+
+#include <boost/mpl/or.hpp>
+#include <boost/tti/detail/dmetafunc.hpp>
+#include <boost/tti/detail/dplaceholder.hpp>
+#include <boost/tti/gen/namespace_gen.hpp>
+
+namespace boost
+ {
+ namespace tti
+ {
+ namespace detail
+ {
+ template <class TTI_T>
+ struct is_lambda_expression :
+ boost::mpl::or_
+ <
+ BOOST_TTI_NAMESPACE::detail::is_metafunction_class<TTI_T>,
+ BOOST_TTI_NAMESPACE::detail::is_placeholder_expression<TTI_T>
+ >
+ {
+ };
+ }
+ }
+ }
+
+#endif // BOOST_TTI_DETAIL_LAMBDA_HPP
Modified: trunk/boost/tti/detail/dmetafunc.hpp
==============================================================================
--- trunk/boost/tti/detail/dmetafunc.hpp (original)
+++ trunk/boost/tti/detail/dmetafunc.hpp 2012-12-03 00:13:45 EST (Mon, 03 Dec 2012)
@@ -8,6 +8,7 @@
#define BOOST_TTI_DETAIL_METAFUNC_HPP
#include <boost/mpl/has_xxx.hpp>
+#include <boost/tti/gen/namespace_gen.hpp>
namespace boost
{
@@ -18,7 +19,7 @@
BOOST_MPL_HAS_XXX_TEMPLATE_NAMED_DEF(is_metafunction_class_apply, apply, false)
template <class TTI_T>
struct is_metafunction_class :
- boost::tti::detail::is_metafunction_class_apply<TTI_T>
+ BOOST_TTI_NAMESPACE::detail::is_metafunction_class_apply<TTI_T>
{
};
}
Added: trunk/boost/tti/detail/dplaceholder.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/tti/detail/dplaceholder.hpp 2012-12-03 00:13:45 EST (Mon, 03 Dec 2012)
@@ -0,0 +1,36 @@
+
+// (C) Copyright Edward Diener 2012
+// Use, modification and distribution are subject to the Boost Software License,
+// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt).
+
+#if !defined(BOOST_TTI_DETAIL_PLACEHOLDER_HPP)
+#define BOOST_TTI_DETAIL_PLACEHOLDER_HPP
+
+#include <boost/mpl/lambda.hpp>
+#include <boost/mpl/not.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost
+ {
+ namespace tti
+ {
+ namespace detail
+ {
+ template <class TTI_T>
+ struct is_placeholder_expression :
+ boost::mpl::not_
+ <
+ boost::is_same
+ <
+ typename boost::mpl::lambda<TTI_T>::type,
+ TTI_T
+ >
+ >
+ {
+ };
+ }
+ }
+ }
+
+#endif // BOOST_TTI_DETAIL_PLACEHOLDER_HPP
Modified: trunk/boost/tti/detail/dtype.hpp
==============================================================================
--- trunk/boost/tti/detail/dtype.hpp (original)
+++ trunk/boost/tti/detail/dtype.hpp 2012-12-03 00:13:45 EST (Mon, 03 Dec 2012)
@@ -8,25 +8,13 @@
#define BOOST_TTI_DETAIL_TYPE_HPP
#include <boost/config.hpp>
-#include <boost/mpl/and.hpp>
#include <boost/mpl/apply.hpp>
#include <boost/mpl/bool.hpp>
-#include <boost/mpl/eval_if.hpp>
#include <boost/mpl/has_xxx.hpp>
-#include <boost/mpl/not.hpp>
#include <boost/preprocessor/cat.hpp>
#include <boost/tti/detail/ddeftype.hpp>
-#include <boost/tti/detail/dmetafunc.hpp>
+#include <boost/tti/detail/dlambda.hpp>
#include <boost/tti/gen/namespace_gen.hpp>
-#include <boost/type_traits/is_same.hpp>
-
-#define BOOST_TTI_DETAIL_TRAIT_IS_SAME_HAS_TYPE(trait,name) \
-template<class TTI_T,class TTI_U> \
-struct BOOST_PP_CAT(trait,_detail_type_is_same) : \
- boost::is_same<typename TTI_T::name,TTI_U> \
- { \
- }; \
-/**/
#define BOOST_TTI_DETAIL_TRAIT_INVOKE_HAS_TYPE(trait,name) \
template<class TTI_T,class TTI_MFC> \
@@ -38,37 +26,24 @@
#define BOOST_TTI_DETAIL_TRAIT_HAS_TYPE(trait,name) \
BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(BOOST_PP_CAT(trait,_detail_type_mpl), name, false) \
-BOOST_TTI_DETAIL_TRAIT_IS_SAME_HAS_TYPE(trait,name) \
BOOST_TTI_DETAIL_TRAIT_INVOKE_HAS_TYPE(trait,name) \
-template<class TTI_T,class TTI_U,class TTI_NOINV,class TTI_B> \
+template<class TTI_T,class TTI_U,class TTI_B> \
struct BOOST_PP_CAT(trait,_detail_type) \
{ \
- typedef typename \
- boost::mpl::eval_if \
- < \
- boost::mpl::and_ \
- < \
- boost::mpl::not_ \
- < \
- TTI_NOINV \
- >, \
- typename BOOST_TTI_NAMESPACE::detail::is_metafunction_class<TTI_U>::type \
- >, \
- BOOST_PP_CAT(trait,_detail_type_invoke)<TTI_T,TTI_U>, \
- BOOST_PP_CAT(trait,_detail_type_is_same)<TTI_T,TTI_U> \
- >::type type; \
+ BOOST_MPL_ASSERT((BOOST_TTI_NAMESPACE::detail::is_lambda_expression<TTI_U>)); \
+ typedef typename BOOST_PP_CAT(trait,_detail_type_invoke)<TTI_T,TTI_U>::type type; \
BOOST_STATIC_CONSTANT(bool,value=type::value); \
}; \
\
-template<class TTI_T,class TTI_U,class TTI_NOINV> \
-struct BOOST_PP_CAT(trait,_detail_type)<TTI_T,TTI_U,TTI_NOINV,boost::mpl::false_::type> \
+template<class TTI_T,class TTI_U> \
+struct BOOST_PP_CAT(trait,_detail_type)<TTI_T,TTI_U,boost::mpl::false_::type> \
{ \
typedef boost::mpl::false_::type type; \
BOOST_STATIC_CONSTANT(bool,value=type::value); \
}; \
\
-template<class TTI_T,class TTI_NOINV> \
-struct BOOST_PP_CAT(trait,_detail_type)<TTI_T,BOOST_TTI_NAMESPACE::detail::deftype,TTI_NOINV,boost::mpl::true_::type> \
+template<class TTI_T> \
+struct BOOST_PP_CAT(trait,_detail_type)<TTI_T,BOOST_TTI_NAMESPACE::detail::deftype,boost::mpl::true_::type> \
{ \
typedef boost::mpl::true_::type type; \
BOOST_STATIC_CONSTANT(bool,value=type::value); \
Modified: trunk/boost/tti/has_type.hpp
==============================================================================
--- trunk/boost/tti/has_type.hpp (original)
+++ trunk/boost/tti/has_type.hpp 2012-12-03 00:13:45 EST (Mon, 03 Dec 2012)
@@ -27,8 +27,8 @@
BOOST_TTI_TRAIT_HAS_TYPE is a macro which expands to a metafunction.
The metafunction tests whether an inner type with a particular name exists
- and, optionally, whether a second type is the same type as the inner type
- or whether a lambda expression invoked with the inner type is true or not.
+ and, optionally, whether a lambda expression invoked with the inner type
+ is true or not.
trait = the name of the metafunction within the tti namespace.
@@ -36,7 +36,7 @@
generates a metafunction called "trait" where 'trait' is the macro parameter.
- template<class TTI_T,class TTI_U,class TTI_B>
+ template<class TTI_T,class TTI_U>
struct trait
{
static const value = unspecified;
@@ -47,44 +47,23 @@
TTI_T = the enclosing type in which to look for our 'name'.
- TTI_U = (optional) An optional template parameter, defaulting to a marker type..
- If specified it is a type which is one of two possibilities.
+ TTI_U = (optional) An optional template parameter, defaulting to a marker type.
+ If specified it is an MPL lambda expression which is invoked
+ with the inner type found and must return a constant boolean
+ value.
- 1) A type, which if specified, is checked to be the same as
- the inner type found.
-
- 2) An MPL lambda expression which is invoked with the inner
- type found and must return a constant boolean value.
-
- TTI_B = (optional) An optional template parameter of type boost::mpl::bool_,
- defaulting to boost::mpl::false_.
-
- If TTI_U is an MPL lambda expression, whose type is meant to
- be checked to be the same as the inner type, rather than be
- invoked by the inner type, this parameter shoud be set to
- boost::mpl::true_.
-
returns = 'value' depends on whether or not the optional TTI_U is specified.
If TTI_U is not specified, then 'value' is true if the 'name' type
- exists within the enclosing type TTI_T, otherwise 'value' is false.
+ exists within the enclosing type TTI_T; otherwise 'value' is false.
- If TTI_U is specified there are two possibiltities:
-
- 1) TTI_U is an MPL lambda expression and TTI_B is not specified ( or
- specified as the default boost::mpl::false_ ), then 'value' is true
- if the 'name' type exists within the enclosing type TTI_T and the
- lambda expression as specified by TTI_U, invoked by passing the
- actual inner type of 'name', returns a 'value' of true, otherwise
- 'value' is false.
-
- 2) TTI_U is not an MPL lambda expression or TTI_B is boost::mpl::true_,
- 'value' is true if the 'name' type exists within the enclosing type
- TTI_T and the TTI_U type is the same as the actual inner type,
- otherwise 'value' is false.
+ If TTI_U is specified , then 'value' is true if the 'name' type exists
+ within the enclosing type TTI_T and the lambda expression as specified
+ by TTI_U, invoked by passing the actual inner type of 'name', returns
+ a 'value' of true; otherwise 'value' is false.
- In either case the action taken with TTI_U occurs only when the 'name'
- type exists within the enclosing type TTI_T.
+ The action taken with TTI_U occurs only when the 'name' type exists
+ within the enclosing type TTI_T.
Example usage:
@@ -93,30 +72,28 @@
LookFor<EnclosingType>::value is true if MyType is an inner type of EnclosingType, otherwise false.
- LookFor<EnclosingType,AnotherType>::value is true if MyType is an inner type of EnclosingType
- and the inner type is the same type as AnotherType, otherwise false.
-
LookFor<EnclosingType,ALambdaExpression>::value is true if MyType is an inner type of EnclosingType
and invoking ALambdaExpression with the inner type returns a value of true, otherwise false.
-
- LookFor<EnclosingType,ALambdaExpression,boost::mpl::true_>::value is true if MyType is an inner type
- of EnclosingType and the inner type is the same type as ALambdaExpression, otherwise false.
+ A popular use of the optional MPL lambda expression is to check whether the type found is the same
+ as another type, when the type found is a typedef. In that case our example would be:
+
+ LookFor<EnclosingType,boost::is_same<_,SomeOtherType> >::value is true if MyType is an inner type
+ of EnclosingType and is the same type as SomeOtherType.
+
*/
#define BOOST_TTI_TRAIT_HAS_TYPE(trait,name) \
BOOST_TTI_DETAIL_TRAIT_HAS_TYPE(trait,name) \
template \
< \
class TTI_T, \
- class TTI_U = BOOST_TTI_NAMESPACE::detail::deftype, \
- class TTI_B = boost::mpl::false_ \
+ class TTI_U = BOOST_TTI_NAMESPACE::detail::deftype \
> \
struct trait : \
BOOST_PP_CAT(trait,_detail_type) \
< \
TTI_T, \
TTI_U, \
- TTI_B, \
typename BOOST_PP_CAT(trait,_detail_type_mpl)<TTI_T>::type \
> \
{ \
@@ -127,14 +104,14 @@
BOOST_TTI_HAS_TYPE is a macro which expands to a metafunction.
The metafunction tests whether an inner type with a particular name exists
- and, optionally, whether a second type is the same type as the inner type
- or whether a lambda expression invoked with the inner type is true or not.
+ and, optionally, whether a lambda expression invoked with the inner type
+ is true or not.
name = the name of the inner type.
generates a metafunction called "has_type_'name'" where 'name' is the macro parameter.
- template<class TTI_T,class TTI_U,class TTI_B>
+ template<class TTI_T,class TTI_U>
struct has_type_'name'
{
static const value = unspecified;
@@ -145,44 +122,23 @@
TTI_T = the enclosing type in which to look for our 'name'.
- TTI_U = (optional) An optional template parameter, defaulting to a marker type..
- If specified it is a type which is one of two possibilities.
+ TTI_U = (optional) An optional template parameter, defaulting to a marker type.
+ If specified it is an MPL lambda expression which is invoked
+ with the inner type found and must return a constant boolean
+ value.
- 1) A type, which if specified, is checked to be the same as
- the inner type found.
-
- 2) An MPL lambda expression which is invoked with the inner
- type found and must return a constant boolean value.
-
- TTI_B = (optional) An optional template parameter of type boost::mpl::bool_,
- defaulting to boost::mpl::false_.
-
- If TTI_U is an MPL lambda expression, whose type is meant to
- be checked to be the same as the inner type, rather than be
- invoked by the inner type, this parameter shoud be set to
- boost::mpl::true_.
-
returns = 'value' depends on whether or not the optional TTI_U is specified.
If TTI_U is not specified, then 'value' is true if the 'name' type
- exists within the enclosing type TTI_T, otherwise 'value' is false.
+ exists within the enclosing type TTI_T; otherwise 'value' is false.
- If TTI_U is specified there are two possibiltities:
-
- 1) TTI_U is an MPL lambda expression and TTI_B is not specified ( or
- specified as the default boost::mpl::false_ ), then 'value' is true
- if the 'name' type exists within the enclosing type TTI_T and the
- lambda expression as specified by TTI_U, invoked by passing the
- actual inner type of 'name', returns a 'value' of true, otherwise
- 'value' is false.
-
- 2) TTI_U is not an MPL lambda expression or TTI_B is boost::mpl::true_,
- 'value' is true if the 'name' type exists within the enclosing type
- TTI_T and the TTI_U type is the same as the actual inner type,
- otherwise 'value' is false.
+ If TTI_U is specified , then 'value' is true if the 'name' type exists
+ within the enclosing type TTI_T and the lambda expression as specified
+ by TTI_U, invoked by passing the actual inner type of 'name', returns
+ a 'value' of true; otherwise 'value' is false.
- In either case the action taken with TTI_U occurs only when the 'name'
- type exists within the enclosing type TTI_T.
+ The action taken with TTI_U occurs only when the 'name' type exists
+ within the enclosing type TTI_T.
Example usage:
@@ -191,15 +147,15 @@
has_type_MyType<EnclosingType>::value is true if MyType is an inner type of EnclosingType, otherwise false.
- has_type_MyType<EnclosingType,AnotherType>::value is true if MyType is an inner type of EnclosingType
- and the inner type is the same type as AnotherType, otherwise false.
-
has_type_MyType<EnclosingType,ALambdaExpression>::value is true if MyType is an inner type of EnclosingType
and invoking ALambdaExpression with the inner type returns a value of true, otherwise false.
- has_type_MyType<EnclosingType,ALambdaExpression,boost::mpl::true_>::value is true if MyType is an inner type
- of EnclosingType and the inner type is the same type as ALambdaExpression, otherwise false.
-
+ A popular use of the optional MPL lambda expression is to check whether the type found is the same
+ as another type, when the type found is a typedef. In that case our example would be:
+
+ has_type_MyType<EnclosingType,boost::is_same<_,SomeOtherType> >::value is true if MyType is an inner type
+ of EnclosingType and is the same type as SomeOtherType.
+
*/
#define BOOST_TTI_HAS_TYPE(name) \
BOOST_TTI_TRAIT_HAS_TYPE \
Modified: trunk/libs/tti/test/test_has_type_ct.cpp
==============================================================================
--- trunk/libs/tti/test/test_has_type_ct.cpp (original)
+++ trunk/libs/tti/test/test_has_type_ct.cpp 2012-12-03 00:13:45 EST (Mon, 03 Dec 2012)
@@ -6,19 +6,22 @@
#include "test_has_type.hpp"
#include <boost/detail/lightweight_test.hpp>
+#include <boost/mpl/placeholders.hpp>
+#include <boost/type_traits/is_same.hpp>
+using namespace boost::mpl::placeholders;
int main()
{
- BOOST_TEST((BOOST_TTI_HAS_TYPE_GEN(AnIntType)<AType,int>::value));
- BOOST_TEST((NameStruct<AType,AType::AStructType>::value));
- BOOST_TEST((BOOST_TTI_HAS_TYPE_GEN(AnIntTypeReference)<AType,int &>::value));
- BOOST_TEST((BOOST_TTI_HAS_TYPE_GEN(BType)<AType,AType::BType>::value));
- BOOST_TEST((TheInteger<AType::BType,int>::value));
- BOOST_TEST((BOOST_TTI_HAS_TYPE_GEN(CType)<AType::BType,AType::BType::CType>::value));
- BOOST_TEST((BOOST_TTI_HAS_TYPE_GEN(AnotherIntegerType)<AType::BType::CType,int>::value));
- BOOST_TEST((SomethingElse<AnotherType,AType::AnIntType>::value));
- BOOST_TEST((!BOOST_TTI_HAS_TYPE_GEN(NoOtherType)<AnotherType,double>::value));
+ BOOST_TEST((BOOST_TTI_HAS_TYPE_GEN(AnIntType)<AType,boost::is_same<int,_> >::value));
+ BOOST_TEST((NameStruct<AType,boost::is_same<AType::AStructType,_> >::value));
+ BOOST_TEST((BOOST_TTI_HAS_TYPE_GEN(AnIntTypeReference)<AType,boost::is_same<int &,_> >::value));
+ BOOST_TEST((BOOST_TTI_HAS_TYPE_GEN(BType)<AType,boost::is_same<AType::BType,_> >::value));
+ BOOST_TEST((TheInteger<AType::BType,boost::is_same<int,_> >::value));
+ BOOST_TEST((BOOST_TTI_HAS_TYPE_GEN(CType)<AType::BType,boost::is_same<AType::BType::CType,_> >::value));
+ BOOST_TEST((BOOST_TTI_HAS_TYPE_GEN(AnotherIntegerType)<AType::BType::CType,boost::is_same<int,_> >::value));
+ BOOST_TEST((SomethingElse<AnotherType,boost::is_same<AType::AnIntType,_> >::value));
+ BOOST_TEST((!BOOST_TTI_HAS_TYPE_GEN(NoOtherType)<AnotherType,boost::is_same<double,_> >::value));
return boost::report_errors();
Modified: trunk/libs/tti/test/test_has_type_ct_compile.cpp
==============================================================================
--- trunk/libs/tti/test/test_has_type_ct_compile.cpp (original)
+++ trunk/libs/tti/test/test_has_type_ct_compile.cpp 2012-12-03 00:13:45 EST (Mon, 03 Dec 2012)
@@ -6,25 +6,28 @@
#include "test_has_type.hpp"
#include <boost/mpl/assert.hpp>
+#include <boost/mpl/placeholders.hpp>
+#include <boost/type_traits/is_same.hpp>
+using namespace boost::mpl::placeholders;
int main()
{
// You can always instantiate without compiler errors
- TheInteger<AType::BType,short> aVar;
- BOOST_TTI_HAS_TYPE_GEN(NoOtherType)<AnotherType,double> aVar2;
+ TheInteger<AType::BType,boost::is_same<short,_> > aVar;
+ BOOST_TTI_HAS_TYPE_GEN(NoOtherType)<AnotherType,boost::is_same<double,_> > aVar2;
// Compile time asserts
- BOOST_MPL_ASSERT((BOOST_TTI_HAS_TYPE_GEN(AnIntType)<AType,int>));
- BOOST_MPL_ASSERT((NameStruct<AType,AType::AStructType>));
- BOOST_MPL_ASSERT((BOOST_TTI_HAS_TYPE_GEN(AnIntTypeReference)<AType,int &>));
- BOOST_MPL_ASSERT((BOOST_TTI_HAS_TYPE_GEN(BType)<AType,AType::BType>));
- BOOST_MPL_ASSERT((TheInteger<AType::BType,int>));
- BOOST_MPL_ASSERT((BOOST_TTI_HAS_TYPE_GEN(CType)<AType::BType,AType::BType::CType>));
- BOOST_MPL_ASSERT((BOOST_TTI_HAS_TYPE_GEN(AnotherIntegerType)<AType::BType::CType,int>));
- BOOST_MPL_ASSERT((SomethingElse<AnotherType,AType::AnIntType>));
+ BOOST_MPL_ASSERT((BOOST_TTI_HAS_TYPE_GEN(AnIntType)<AType,boost::is_same<int,_> >));
+ BOOST_MPL_ASSERT((NameStruct<AType,boost::is_same<AType::AStructType,_> >));
+ BOOST_MPL_ASSERT((BOOST_TTI_HAS_TYPE_GEN(AnIntTypeReference)<AType,boost::is_same<int &,_> >));
+ BOOST_MPL_ASSERT((BOOST_TTI_HAS_TYPE_GEN(BType)<AType,boost::is_same<AType::BType,_> >));
+ BOOST_MPL_ASSERT((TheInteger<AType::BType,boost::is_same<int,_> >));
+ BOOST_MPL_ASSERT((BOOST_TTI_HAS_TYPE_GEN(CType)<AType::BType,boost::is_same<AType::BType::CType,_> >));
+ BOOST_MPL_ASSERT((BOOST_TTI_HAS_TYPE_GEN(AnotherIntegerType)<AType::BType::CType,boost::is_same<int,_> >));
+ BOOST_MPL_ASSERT((SomethingElse<AnotherType,boost::is_same<AType::AnIntType,_> >));
return 0;
Modified: trunk/libs/tti/test/test_has_type_ct_fail.cpp
==============================================================================
--- trunk/libs/tti/test/test_has_type_ct_fail.cpp (original)
+++ trunk/libs/tti/test/test_has_type_ct_fail.cpp 2012-12-03 00:13:45 EST (Mon, 03 Dec 2012)
@@ -6,13 +6,16 @@
#include "test_has_type.hpp"
#include <boost/mpl/assert.hpp>
+#include <boost/mpl/placeholders.hpp>
+#include <boost/type_traits/is_same.hpp>
+using namespace boost::mpl::placeholders;
int main()
{
// NoOtherType does not exist at all
- BOOST_MPL_ASSERT((BOOST_TTI_HAS_TYPE_GEN(NoOtherType)<AType,int>));
+ BOOST_MPL_ASSERT((BOOST_TTI_HAS_TYPE_GEN(NoOtherType)<AType,boost::is_same<int,_> >));
return 0;
Modified: trunk/libs/tti/test/test_has_type_ct_fail2.cpp
==============================================================================
--- trunk/libs/tti/test/test_has_type_ct_fail2.cpp (original)
+++ trunk/libs/tti/test/test_has_type_ct_fail2.cpp 2012-12-03 00:13:45 EST (Mon, 03 Dec 2012)
@@ -6,13 +6,16 @@
#include "test_has_type.hpp"
#include <boost/mpl/assert.hpp>
+#include <boost/mpl/placeholders.hpp>
+#include <boost/type_traits/is_same.hpp>
+using namespace boost::mpl::placeholders;
int main()
{
// Wrong enclosing type
- BOOST_MPL_ASSERT((BOOST_TTI_HAS_TYPE_GEN(BType)<AnotherType,short>));
+ BOOST_MPL_ASSERT((BOOST_TTI_HAS_TYPE_GEN(BType)<AnotherType,boost::is_same<short,_> >));
return 0;
Modified: trunk/libs/tti/test/test_has_type_ct_fail3.cpp
==============================================================================
--- trunk/libs/tti/test/test_has_type_ct_fail3.cpp (original)
+++ trunk/libs/tti/test/test_has_type_ct_fail3.cpp 2012-12-03 00:13:45 EST (Mon, 03 Dec 2012)
@@ -5,13 +5,16 @@
// http://www.boost.org/LICENSE_1_0.txt).
#include "test_has_type.hpp"
+#include <boost/mpl/placeholders.hpp>
+#include <boost/type_traits/is_same.hpp>
+using namespace boost::mpl::placeholders;
int main()
{
// Enclosing type does not exist
- TheInteger<AType::EType,double> aVar;
+ TheInteger<AType::EType,boost::is_same<double,_> > aVar;
return 0;
Modified: trunk/libs/tti/test/test_has_type_ct_fail4.cpp
==============================================================================
--- trunk/libs/tti/test/test_has_type_ct_fail4.cpp (original)
+++ trunk/libs/tti/test/test_has_type_ct_fail4.cpp 2012-12-03 00:13:45 EST (Mon, 03 Dec 2012)
@@ -5,13 +5,16 @@
// http://www.boost.org/LICENSE_1_0.txt).
#include "test_has_type.hpp"
+#include <boost/mpl/placeholders.hpp>
+#include <boost/type_traits/is_same.hpp>
+using namespace boost::mpl::placeholders;
int main()
{
// Typedef type does not exist ( BType is a nested type )
- BOOST_TTI_HAS_TYPE_GEN(BType)<AType,BType> aVar;
+ BOOST_TTI_HAS_TYPE_GEN(BType)<AType,boost::is_same<BType,_> > aVar;
return 0;
Modified: trunk/libs/tti/test/test_has_type_ct_fail5.cpp
==============================================================================
--- trunk/libs/tti/test/test_has_type_ct_fail5.cpp (original)
+++ trunk/libs/tti/test/test_has_type_ct_fail5.cpp 2012-12-03 00:13:45 EST (Mon, 03 Dec 2012)
@@ -6,13 +6,16 @@
#include "test_has_type.hpp"
#include <boost/mpl/assert.hpp>
+#include <boost/mpl/placeholders.hpp>
+#include <boost/type_traits/is_same.hpp>
+using namespace boost::mpl::placeholders;
int main()
{
// Wrong typedef type
- BOOST_MPL_ASSERT((BOOST_TTI_HAS_TYPE_GEN(AnotherIntegerType)<AType::BType::CType,long>));
+ BOOST_MPL_ASSERT((BOOST_TTI_HAS_TYPE_GEN(AnotherIntegerType)<AType::BType::CType,boost::is_same<long,_> >));
return 0;
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