From e0bfa608ce5b400410fe80803da73564c6e66247 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Sat, 4 May 2002 11:03:42 +0000 Subject: [PATCH] Fixes for Borland C++ Builder 6 [SVN r13662] --- include/boost/type_traits/composite_traits.hpp | 12 +++++++++--- tests/composite_traits_test.cpp | 4 +++- tests/is_convertible_test.cpp | 10 ++++++---- tests/object_type_traits_test.cpp | 2 +- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/include/boost/type_traits/composite_traits.hpp b/include/boost/type_traits/composite_traits.hpp index 7da2ad8..0df7747 100644 --- a/include/boost/type_traits/composite_traits.hpp +++ b/include/boost/type_traits/composite_traits.hpp @@ -269,11 +269,12 @@ namespace detail }; }; } // namespace detail -#ifndef __BORLANDC__ +#if !(defined(__BORLANDC__) && (__BORLANDC__ <= 0x551)) template struct is_enum { private: - typedef typename ::boost::add_reference::type r_type; + typedef ::boost::add_reference ar_t; + typedef typename ar_t::type r_type; # if (defined(__MWERKS__) && __MWERKS__ >= 0x3000) || BOOST_MSVC > 1301 || defined(BOOST_NO_COMPILER_CONFIG) BOOST_STATIC_CONSTANT(bool, selector = @@ -294,7 +295,12 @@ private: // a dependency recursion. >::value)); # endif - typedef typename ::boost::detail::is_enum_helper::template type helper; +#ifdef __BORLANDC__ + typedef ::boost::detail::is_enum_helper< ::boost::is_enum::selector> se_t; +#else + typedef ::boost::detail::is_enum_helper se_t; +#endif + typedef typename se_t::template type helper; public: BOOST_STATIC_CONSTANT(bool, value = helper::value); }; diff --git a/tests/composite_traits_test.cpp b/tests/composite_traits_test.cpp index 629682b..b20e511 100644 --- a/tests/composite_traits_test.cpp +++ b/tests/composite_traits_test.cpp @@ -131,8 +131,10 @@ int cpp_main(int argc, char* argv[]) // // define the number of failures expected for given compilers: -#ifdef __BORLANDC__ +#if defined(__BORLANDC__) && (__BORLANDC__ <= 0x551) unsigned int expected_failures = 2; +#elif defined(__BORLANDC__) +unsigned int expected_failures = 1; #elif defined(__SUNPRO_CC) #if (__SUNPRO_CC <= 0x520) unsigned int expected_failures = 11; diff --git a/tests/is_convertible_test.cpp b/tests/is_convertible_test.cpp index e36835a..8774b8c 100644 --- a/tests/is_convertible_test.cpp +++ b/tests/is_convertible_test.cpp @@ -15,10 +15,10 @@ struct convertible_from convertible_from(T); }; -#ifndef __BORLANDC__ -# define maybe_value_test value_test -#else +#if defined(__BORLANDC__) && (__BORLANDC__ <= 0x551) # define maybe_value_test value_fail +#else +# define maybe_value_test value_test #endif int cpp_main(int argc, char* argv[]) @@ -95,8 +95,10 @@ int cpp_main(int argc, char* argv[]) // // define the number of failures expected for given compilers: -#ifdef __BORLANDC__ +#if defined(__BORLANDC__) && (__BORLANDC__ <= 0x551) unsigned int expected_failures = 1; +#elif defined(__BORLANDC__) +unsigned int expected_failures = 3; #elif defined(__MWERKS__) && __MWERKS__ < 0x3000 unsigned int expected_failures = 35; #else diff --git a/tests/object_type_traits_test.cpp b/tests/object_type_traits_test.cpp index cc7c0c0..882e46e 100644 --- a/tests/object_type_traits_test.cpp +++ b/tests/object_type_traits_test.cpp @@ -292,7 +292,7 @@ int cpp_main(int argc, char* argv[]) // // define the number of failures expected for given compilers: -#ifdef __BORLANDC__ +#if defined(__BORLANDC__) && (__BORLANDC__ <= 0x551) // can't handle enum's or classes that are POD's unsigned int expected_failures = 9; #elif defined(__SUNPRO_CC)