
Hello all, The following code gives the GCC compiler error below for Boost 1.42.0 while it compiles just fine for Boost 1.34.1. Is this a bug in Boost.TypeTraits for 1.42.0? // File: b00.cpp #include <boost/type_traits.hpp> #include <iostream> struct y {}; struct x: y { static const bool v = boost::is_base_of<y, x>::value; }; int main() { std::cout << x::v << std::endl; return 0; } $ g++ -Wall -Werror b00.cpp /usr/include/boost/type_traits/is_base_and_derived.hpp: In instantiation of ‘boost::detail::is_base_and_derived_impl2<y, x>’: /usr/include/boost/type_traits/is_base_and_derived.hpp:219: instantiated from ‘const bool boost::detail::is_base_and_derived_impl<y, x>::value’ /usr/include/boost/type_traits/is_base_of.hpp:29: instantiated from ‘const bool boost::detail::is_base_of_imp<y, x>::value’ /usr/include/boost/type_traits/is_base_of.hpp:35: instantiated from ‘boost::is_base_of<y, x>’ b00.cpp:8: instantiated from here /usr/include/boost/type_traits/is_base_and_derived.hpp:145: error: invalid application of ‘sizeof’ to incomplete type ‘x’ /usr/include/boost/type_traits/is_base_and_derived.hpp:145: error: invalid application of ‘sizeof’ to incomplete type ‘boost::STATIC_ASSERTION_FAILURE<false>’ $ g++ --version g++ (GCC) 4.2.4 (Ubuntu 4.2.4-1ubuntu4) Copyright (C) 2007 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Thank you. -- Lorenzo