fork download
  1. #include <type_traits>
  2. #include <iostream>
  3.  
  4. template <typename T>
  5. void cannot_take_pointer(T ptr)
  6. {
  7. static_assert(!std::is_pointer<T>::value,
  8. "cannot_take_pointer requires non-pointer argument");
  9. std::cout << "ok\n";
  10. }
  11.  
  12. int main()
  13. {
  14. int x;
  15. cannot_take_pointer(x);
  16. cannot_take_pointer(&x); // fails to compile
  17. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp: In function 'void cannot_take_pointer(T) [with T = int*]':
prog.cpp:16:27:   instantiated from here
prog.cpp:7:5: error: static assertion failed: "cannot_take_pointer requires non-pointer argument"
stdout
Standard output is empty