Suppress warnings with GCC

[SVN r12595]
This commit is contained in:
Dave Abrahams
2002-01-31 05:08:53 +00:00
parent 1bc7d114b2
commit 6ce582379a
2 changed files with 43 additions and 0 deletions

View File

@ -343,6 +343,26 @@ public:
::boost::is_convertible<r_type, detail::int_convertible>::value
>::value));
};
// Specializations suppress some nasty warnings with GCC
template<>
struct is_enum<float>
{
BOOST_STATIC_CONSTANT(bool, value = false);
};
template<>
struct is_enum<double>
{
BOOST_STATIC_CONSTANT(bool, value = false);
};
template<>
struct is_enum<long double>
{
BOOST_STATIC_CONSTANT(bool, value = false);
};
#else // __BORLANDC__
//
// buggy is_convertible prevents working

View File

@ -156,6 +156,29 @@ public:
void foo(); // avoid warning about all members being private
};
// Declare specializations of is_convertible for all of the floating
// types to all of the integral types. This suppresses some nasty
// warnings
# define BOOST_IS_CONVERTIBLE(T1,T2) template<>struct is_convertible<T1,T2>{static const bool value=true;};
# define BOOST_IS_CONVERTIBLE2(T1,T2) \
BOOST_IS_CONVERTIBLE(T1,signed T2) \
BOOST_IS_CONVERTIBLE(T1,unsigned T2)
# define BOOST_FLOAT_IS_CONVERTIBLE(F) \
BOOST_IS_CONVERTIBLE(F,char) \
BOOST_IS_CONVERTIBLE2(F,char) \
BOOST_IS_CONVERTIBLE2(F,short) \
BOOST_IS_CONVERTIBLE2(F,int) \
BOOST_IS_CONVERTIBLE2(F,long) \
BOOST_IS_CONVERTIBLE2(F,long long)
BOOST_FLOAT_IS_CONVERTIBLE(float)
BOOST_FLOAT_IS_CONVERTIBLE(double)
BOOST_FLOAT_IS_CONVERTIBLE(long double)
# undef BOOST_FLOAT_IS_CONVERTIBLE
# undef BOOST_IS_CONVERTIBLE2
# undef BOOST_IS_CONVERTIBLE
#else
template <class From, class To>