// { dg-options "-w" } // { dg-do run { target c++11 } } #include #include // A simple typelist template struct types {}; // Simple bases implementation template struct b { typedef types<__bases(T)...> type; }; // Simple direct_bases implementation template struct db { typedef types<__direct_bases(T)...> type; }; template struct assert_same_type; template struct assert_same_type {}; struct A {}; struct C : virtual A {}; struct D : public C {}; struct B : D, virtual A {}; struct E : C, virtual D, B {}; struct F : A, B, E {}; int main() { assert_same_type::type, types>(); assert_same_type::type, types>(); assert_same_type::type, types<>>(); return 0; }