
These three lines near the end of boost/type_traits/is_convertable.hpp: TT_AUX_IS_CONVERTIBLE_FROM_FLOAT_CV_SPEC(float) TT_AUX_IS_CONVERTIBLE_FROM_FLOAT_CV_SPEC(double) TT_AUX_IS_CONVERTIBLE_FROM_FLOAT_CV_SPEC(long double) don't compile on GCC 3.4.1 when -pedantic is specified. This is actually sort of strange, because it compiles without warnings when -std=c++98 -Wall -W are specified, and -pedantic itself is not supposed to generate errors, only warnings. So, there is probably at least a GCC bug here. Does anyone have any idea what this is about? $ g++ -pedantic -I../boost -c stuff.cpp In file included from stuff.cpp:1: ../boost/boost/type_traits/is_convertible.hpp:274: error: long, short, signed or unsigned used invalidly for `type name' ../boost/boost/type_traits/is_convertible.hpp:274: error: long, short, signed or unsigned used invalidly for `type name' ../boost/boost/type_traits/is_convertible.hpp:274: error: redefinition of `struct boost::is_convertible<float, int64_t>' ../boost/boost/type_traits/is_convertible.hpp:274: error: previous definition of `struct boost::is_convertible<float, int64_t>' ../boost/boost/type_traits/is_convertible.hpp:274: error: long, short, signed or unsigned used invalidly for `type name' ../boost/boost/type_traits/is_convertible.hpp:274: error: long, short, signed or unsigned used invalidly for `type name' ../boost/boost/type_traits/is_convertible.hpp:274: error: redefinition of `struct boost::is_convertible<const float, int64_t>' ../boost/boost/type_traits/is_convertible.hpp:274: error: previous definition of `struct boost::is_convertible<const float, int64_t>' ../boost/boost/type_traits/is_convertible.hpp:274: error: long, short, signed or unsigned used invalidly for `type name' ../boost/boost/type_traits/is_convertible.hpp:274: error: long, short, signed or unsigned used invalidly for `type name' ../boost/boost/type_traits/is_convertible.hpp:274: error: redefinition of `struct boost::is_convertible<volatile float, int64_t>' ../boost/boost/type_traits/is_convertible.hpp:274: error: previous definition of `struct boost::is_convertible<volatile float, int64_t>' ../boost/boost/type_traits/is_convertible.hpp:274: error: long, short, signed or unsigned used invalidly for `type name' ../boost/boost/type_traits/is_convertible.hpp:274: error: long, short, signed or unsigned used invalidly for `type name' ../boost/boost/type_traits/is_convertible.hpp:274: error: redefinition of `struct boost::is_convertible<const volatile float, int64_t>' ../boost/boost/type_traits/is_convertible.hpp:274: error: previous definition of `struct boost::is_convertible<const volatile float, int64_t>' ../boost/boost/type_traits/is_convertible.hpp:275: error: long, short, signed or unsigned used invalidly for `type name' ../boost/boost/type_traits/is_convertible.hpp:275: error: long, short, signed or unsigned used invalidly for `type name' ../boost/boost/type_traits/is_convertible.hpp:275: error: redefinition of `struct boost::is_convertible<double, int64_t>' ../boost/boost/type_traits/is_convertible.hpp:275: error: previous definition of `struct boost::is_convertible<double, int64_t>' ../boost/boost/type_traits/is_convertible.hpp:275: error: long, short, signed or unsigned used invalidly for `type name' ../boost/boost/type_traits/is_convertible.hpp:275: error: long, short, signed or unsigned used invalidly for `type name' ../boost/boost/type_traits/is_convertible.hpp:275: error: redefinition of `struct boost::is_convertible<const double, int64_t>' ../boost/boost/type_traits/is_convertible.hpp:275: error: previous definition of `struct boost::is_convertible<const double, int64_t>' ../boost/boost/type_traits/is_convertible.hpp:275: error: long, short, signed or unsigned used invalidly for `type name' ../boost/boost/type_traits/is_convertible.hpp:275: error: long, short, signed or unsigned used invalidly for `type name' ../boost/boost/type_traits/is_convertible.hpp:275: error: redefinition of `struct boost::is_convertible<volatile double, int64_t>' ../boost/boost/type_traits/is_convertible.hpp:275: error: previous definition of `struct boost::is_convertible<volatile double, int64_t>' ../boost/boost/type_traits/is_convertible.hpp:275: error: long, short, signed or unsigned used invalidly for `type name' ../boost/boost/type_traits/is_convertible.hpp:275: error: long, short, signed or unsigned used invalidly for `type name' ../boost/boost/type_traits/is_convertible.hpp:275: error: redefinition of `struct boost::is_convertible<const volatile double, int64_t>' ../boost/boost/type_traits/is_convertible.hpp:275: error: previous definition of `struct boost::is_convertible<const volatile double, int64_t>' ../boost/boost/type_traits/is_convertible.hpp:276: error: long, short, signed or unsigned used invalidly for `type name' ../boost/boost/type_traits/is_convertible.hpp:276: error: long, short, signed or unsigned used invalidly for `type name' ../boost/boost/type_traits/is_convertible.hpp:276: error: redefinition of `struct boost::is_convertible<long double, int64_t>' ../boost/boost/type_traits/is_convertible.hpp:276: error: previous definition of `struct boost::is_convertible<long double, int64_t>' ../boost/boost/type_traits/is_convertible.hpp:276: error: long, short, signed or unsigned used invalidly for `type name' ../boost/boost/type_traits/is_convertible.hpp:276: error: long, short, signed or unsigned used invalidly for `type name' ../boost/boost/type_traits/is_convertible.hpp:276: error: redefinition of `struct boost::is_convertible<const long double, int64_t>' ../boost/boost/type_traits/is_convertible.hpp:276: error: previous definition of `struct boost::is_convertible<const long double, int64_t>' ../boost/boost/type_traits/is_convertible.hpp:276: error: long, short, signed or unsigned used invalidly for `type name' ../boost/boost/type_traits/is_convertible.hpp:276: error: long, short, signed or unsigned used invalidly for `type name' ../boost/boost/type_traits/is_convertible.hpp:276: error: redefinition of `struct boost::is_convertible<volatile long double, int64_t>' ../boost/boost/type_traits/is_convertible.hpp:276: error: previous definition of `struct boost::is_convertible<volatile long double, int64_t>' ../boost/boost/type_traits/is_convertible.hpp:276: error: long, short, signed or unsigned used invalidly for `type name' ../boost/boost/type_traits/is_convertible.hpp:276: error: long, short, signed or unsigned used invalidly for `type name' ../boost/boost/type_traits/is_convertible.hpp:276: error: redefinition of `struct boost::is_convertible<const volatile long double, int64_t>' ../boost/boost/type_traits/is_convertible.hpp:276: error: previous definition of `struct boost::is_convertible<const volatile long double, int64_t>' Pentium 4 on Windows XP Pro gcc 3.4.1 on mingw32 binutils 2.15 mingwrt 3.3 Thanks for your attention, Aaron W. LaFramboise