id summary reporter owner description type status milestone component version severity resolution keywords cc 11323 is_virtual_base_of fails to build when virtual bases and their ancestors define identical virtual functions leandro.gracia.gil@… John Maddock "The following code snippet fails to build in clang 6.0: {{{ #include #include struct A { virtual void foo() {} }; struct B : public virtual A { virtual void foo() {} }; struct C : public B {}; int main() { std::cout << boost::is_virtual_base_of::value << std::endl; return 0; } }}} This is the compiler error it throws: {{{ /usr/local/include/boost/type_traits/is_virtual_base_of.hpp:55:12: error: virtual function 'A::foo' has more than one final overrider in 'boost_type_traits_internal_struct_X' struct boost_type_traits_internal_struct_X : public Derived, virtual Base (...) }}} The problem can be temporarily worked around by redefining virtual void foo() {} into boost_type_traits_internal_struct_X, but that does not scale as we would need to know and override every single virtual method that appears both in A and B." Bugs closed To Be Determined type_traits Boost 1.57.0 Problem fixed