fork download
  1. #include <iostream>
  2.  
  3. template <typename T = char>
  4. class smart_pointer
  5. {
  6. public:
  7. smart_pointer() : pt (nullptr) {}
  8. smart_pointer(T *new_pt) : pt (new_pt) {}
  9.  
  10. T& operator*() { return *pt; }
  11. const T& operator*() const { return *pt; }
  12.  
  13. private:
  14. T* pt;
  15. };
  16.  
  17. int main()
  18. {
  19. smart_pointer sp;
  20. smart_pointer<int> pi = new int (42);
  21. smart_pointer<float> pf = new float (3.14f);
  22.  
  23. // std::cout << sp << '\n';
  24. std::cout << *pi << '\n';
  25. std::cout << *pf << '\n';
  26. }
  27.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:19:2: error: use of class template 'smart_pointer' requires template arguments
        smart_pointer sp;
        ^
prog.cpp:4:7: note: template is declared here
class smart_pointer
      ^
1 error generated.
stdout
Standard output is empty