fork(1) download
  1. #include <iostream>
  2.  
  3. struct V {
  4. virtual void f() {
  5. std::cout << "V" << std::endl;
  6. }
  7. };
  8.  
  9. struct A : virtual V {
  10. virtual void f() {
  11. std::cout << "A" << std::endl;
  12. }
  13. };
  14.  
  15. struct B : virtual V {
  16. virtual void f() {
  17. std::cout << "B" << std::endl;
  18. }
  19. B(V*, A*);
  20. };
  21.  
  22. struct D : A, B {
  23. virtual void f() {}
  24. D() : B((A*)this, this) { }
  25. };
  26.  
  27. B::B(V* v, A* a) {
  28. a->f(); // undefined behavior, a’s type not a base of B
  29. }
  30.  
  31. int main() {
  32. D d;
  33. }
  34.  
Success #stdin #stdout 0.02s 2680KB
stdin
Standard input is empty
stdout
B