diff --git a/include/boost/type_traits/is_virtual_base_of.hpp b/include/boost/type_traits/is_virtual_base_of.hpp index 74cbe4e..5dc93c4 100644 --- a/include/boost/type_traits/is_virtual_base_of.hpp +++ b/include/boost/type_traits/is_virtual_base_of.hpp @@ -36,21 +36,21 @@ struct is_virtual_base_of_impl template struct is_virtual_base_of_impl { - struct X : Derived, virtual Base + struct X : public virtual Derived, public virtual Base { X(); X(const X&); X& operator=(const X&); ~X(); }; - struct Y : Derived + struct Y : public virtual Derived { Y(); Y(const Y&); Y& operator=(const Y&); ~Y(); }; - BOOST_STATIC_CONSTANT(bool, value = sizeof(X)==sizeof(Y)); + BOOST_STATIC_CONSTANT(bool, value = (sizeof(X)==sizeof(Y))); }; template diff --git a/test/is_virtual_base_of_test.cpp b/test/is_virtual_base_of_test.cpp index 6c3dc2a..4e33714 100644 --- a/test/is_virtual_base_of_test.cpp +++ b/test/is_virtual_base_of_test.cpp @@ -9,7 +9,6 @@ #include "check_integral_constant.hpp" #include - TT_TEST_BEGIN(is_virtual_base_of) BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_virtual_base_of::value), false); @@ -35,7 +34,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_virtual_base_of:: BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_virtual_base_of::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_virtual_base_of::value), true); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_virtual_base_of::value), false); +#ifndef BOOST_BROKEN_IS_BASE_AND_DERIVED BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_virtual_base_of::value), true); +#endif BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_virtual_base_of::value), false); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_virtual_base_of::value), true); BOOST_CHECK_INTEGRAL_CONSTANT((::tt::is_virtual_base_of::value), false); diff --git a/test/test.hpp b/test/test.hpp index 972441b..8916078 100644 --- a/test/test.hpp +++ b/test/test.hpp @@ -368,8 +368,8 @@ struct polymorphic_derived2 : polymorphic_base struct virtual_inherit1 : virtual Base { }; struct virtual_inherit2 : virtual_inherit1 { }; struct virtual_inherit3 : private virtual Base {}; -struct virtual_inherit4 : private virtual boost::noncopyable {}; -struct virtual_inherit5 : private virtual int_convertible {}; +struct virtual_inherit4 : virtual boost::noncopyable {}; +struct virtual_inherit5 : virtual int_convertible {}; typedef void foo0_t(); typedef void foo1_t(int);