fork(1) download
  1. #include <iostream>
  2.  
  3. template<typename T>
  4. class ptr {
  5. T* m_ptr;
  6. public:
  7. ptr(T* a_ptr) : m_ptr(a_ptr) {}
  8. T& operator * () const { return *m_ptr; };
  9. };
  10.  
  11. template<>
  12. class ptr<void> {
  13. void* m_ptr;
  14. public:
  15. ptr(void* a_ptr) : m_ptr(a_ptr) {}
  16. };
  17.  
  18. int main()
  19. {
  20. int i = 12345;
  21. ptr<int> ptr_i(&i);
  22. std::cout << *ptr_i; // OK
  23.  
  24. ptr<void> ptr_i2(&i);
  25. std::cout << *ptr_i2; // ERROR
  26.  
  27. return 0;
  28. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp: In function ‘int main()’:
prog.cpp:25:15: error: no match for ‘operator*’ (operand type is ‘ptr<void>’)
  std::cout << *ptr_i2; // ERROR
               ^~~~~~~
stdout
Standard output is empty