[complement-svn] SF.net SVN: complement: [1676] trunk/complement/explore
Status: Pre-Alpha
Brought to you by:
complement
From: <com...@us...> - 2007-08-06 11:18:15
|
Revision: 1676 http://complement.svn.sourceforge.net/complement/?rev=1676&view=rev Author: complement Date: 2007-08-06 04:18:14 -0700 (Mon, 06 Aug 2007) Log Message: ----------- working fixes; add test for is_empty Modified Paths: -------------- trunk/complement/explore/include/misc/type_traits.h trunk/complement/explore/lib/misc/ut/misc_test.cc trunk/complement/explore/lib/misc/ut/misc_test.h trunk/complement/explore/lib/misc/ut/misc_test_suite.cc Modified: trunk/complement/explore/include/misc/type_traits.h =================================================================== --- trunk/complement/explore/include/misc/type_traits.h 2007-08-06 07:01:16 UTC (rev 1675) +++ trunk/complement/explore/include/misc/type_traits.h 2007-08-06 11:18:14 UTC (rev 1676) @@ -399,7 +399,7 @@ template<typename _Tp> struct is_empty - : public integral_constant<bool, (detail::__is_union_or_class<_Tp>::__value + : public integral_constant<bool, (detail::__is_union_or_class<_Tp>::value && (sizeof(detail::__empty<_Tp>) == sizeof(_Tp)))> { }; Modified: trunk/complement/explore/lib/misc/ut/misc_test.cc =================================================================== --- trunk/complement/explore/lib/misc/ut/misc_test.cc 2007-08-06 07:01:16 UTC (rev 1675) +++ trunk/complement/explore/lib/misc/ut/misc_test.cc 2007-08-06 11:18:14 UTC (rev 1676) @@ -11,7 +11,6 @@ #include "misc_test.h" #include <misc/type_traits.h> -#include <iostream> using namespace std; @@ -41,12 +40,12 @@ } template <class T> -static bool q( T v ) +bool q( T v ) { return std::tr1::detail::__instance<T>::__value; } -int EXAM_IMPL(misc_test::type_traits) +int EXAM_IMPL(misc_test::type_traits_internals) { EXAM_CHECK( std::tr1::detail::__instance<int []>::__value == true ); EXAM_CHECK( std::tr1::detail::__instance<int *>::__value == true ); @@ -60,3 +59,52 @@ return EXAM_RESULT; } + +class empty +{ +}; + +class not_empty1 +{ + private: + int k; +}; + +class not_empty2 +{ + private: + int f() const + { return 0; } +}; + +class not_empty3 +{ + private: + virtual int f() const + { return 0; } +}; + +class not_empty4 : + public not_empty2 +{ +}; + +class not_empty5 : + public not_empty3 +{ +}; + +int EXAM_IMPL(misc_test::type_traits_is_empty) +{ + EXAM_CHECK( std::tr1::is_empty<empty>::value == true ); + EXAM_CHECK( std::tr1::is_empty<not_empty1>::value == false ); + // EXAM_CHECK( std::tr1::is_empty<not_empty2>::value == false ); + EXAM_CHECK( std::tr1::is_empty<not_empty3>::value == false ); + EXAM_CHECK( std::tr1::is_empty<int>::value == false ); + // EXAM_CHECK( std::tr1::is_empty<int (&)()>::value == false ); + // EXAM_CHECK( std::tr1::is_empty<not_empty4>::value == false ); + EXAM_CHECK( std::tr1::is_empty<not_empty5>::value == false ); + + return EXAM_RESULT; +} + Modified: trunk/complement/explore/lib/misc/ut/misc_test.h =================================================================== --- trunk/complement/explore/lib/misc/ut/misc_test.h 2007-08-06 07:01:16 UTC (rev 1675) +++ trunk/complement/explore/lib/misc/ut/misc_test.h 2007-08-06 11:18:14 UTC (rev 1676) @@ -18,7 +18,8 @@ class misc_test { public: - int EXAM_DECL(type_traits); + int EXAM_DECL(type_traits_internals); + int EXAM_DECL(type_traits_is_empty); }; #endif // __MISC_TEST_H Modified: trunk/complement/explore/lib/misc/ut/misc_test_suite.cc =================================================================== --- trunk/complement/explore/lib/misc/ut/misc_test_suite.cc 2007-08-06 07:01:16 UTC (rev 1675) +++ trunk/complement/explore/lib/misc/ut/misc_test_suite.cc 2007-08-06 11:18:14 UTC (rev 1676) @@ -20,7 +20,8 @@ exam::test_suite::test_case_type tc[3]; - tc[0] = t.add( &misc_test::type_traits, test, "misc_test::type_traits" ); + t.add( &misc_test::type_traits_is_empty, test, "misc_test::type_traits_is_empty", + t.add( &misc_test::type_traits_internals, test, "misc_test::type_traits_internals" ) ); return t.girdle(); }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |