fork download
  1. #include <iostream>
  2. #include <list>
  3.  
  4. namespace NS1
  5. {
  6. template <class T>
  7. class Base
  8. {
  9. protected:
  10. Base()
  11. {
  12. instances.push_back(static_cast<T*>(this));
  13. }
  14. private:
  15. static std::list<T*> instances;
  16. };
  17.  
  18. class Derived : public Base<Derived>
  19. {
  20. public:
  21. Derived()
  22. :Base<Derived>()
  23. {
  24. }
  25. };
  26. }
  27.  
  28. template <> std::list<NS1::Derived*> NS1::Base<NS1::Derived>::instances;
  29.  
  30. int main()
  31. {
  32. NS1::Derived d;
  33. return 0;
  34. }
  35.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
/home/Yyyqn1/ccGSPRP5.o: In function `main':
prog.cpp:(.text+0x5c): undefined reference to `NS1::Base<NS1::Derived>::instances'
collect2: ld returned 1 exit status
stdout
Standard output is empty