fork(12) download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class X {};
  5. class Y {};
  6.  
  7. template< typename T>
  8. class C {
  9. public:
  10. virtual T * foo() = 0;
  11. };
  12.  
  13. class A : public C< X> {
  14. public:
  15. X * foo() {};
  16. };
  17.  
  18. class B : public A {};
  19.  
  20. class D : public B, public C< Y> {
  21. public:
  22. Y * foo() {};
  23. };
  24.  
  25. int main() {
  26. return 0;
  27. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:22:9: error: invalid covariant return type for 'virtual Y* D::foo()'
     Y * foo() {};
         ^
prog.cpp:15:9: error:   overriding 'virtual X* A::foo()'
     X * foo() {};
         ^
stdout
Standard output is empty