fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. template <typename T>
  5. class Base
  6. {
  7. public:
  8. T* method()
  9. {
  10. return new T();
  11. };
  12. };
  13.  
  14. class Derived : public Base<Derived>
  15. {
  16. public:
  17. explicit Derived(int i=0){
  18. this->i=i;
  19. }
  20.  
  21. int i;
  22. };
  23.  
  24.  
  25. int main() {
  26. Derived d(1);
  27. std::cout<<d.i<<'\n';
  28. auto newD =d.method();
  29. std::cout<<newD->i<<'\n';
  30. delete newD;
  31. return 0;
  32. }
Success #stdin #stdout 0s 3412KB
stdin
Standard input is empty
stdout
1
0