fork download
  1. #include <iostream>
  2.  
  3. template <typename T>
  4. class A
  5. {
  6. public:
  7. template <typename S>
  8. struct node
  9. {
  10. S value;
  11. struct node* right;
  12. struct node* left;
  13.  
  14. node() : value(42), right(), left() {}
  15. };
  16.  
  17. node<T>* foo();
  18. };
  19.  
  20. template <typename T>
  21. typename A<T>::template node<T>* A<T>::foo()
  22. {
  23. node<T>* temp = new node<T>;
  24. return temp;
  25. }
  26.  
  27. int main()
  28. {
  29. A<int> obj;
  30. typename A<int>::template node<int>* p = obj.foo();
  31. std::cout << p->value << std::endl;
  32. delete p;
  33. return 0;
  34. }
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
42