fork download
  1. #include <vector>
  2. class A {
  3. public:
  4. A() {}
  5. };
  6.  
  7. template<typename T>
  8. void foo(const T &p) {
  9. static_assert(
  10. std::is_pod<
  11. typename std::remove_reference<
  12. decltype(p[0])
  13. >::type
  14. >::value, "MUST BE POD");
  15. }
  16. int main() {
  17. int b[10];
  18. A c[10];
  19. int *d = b;
  20. A *e = c;
  21.  
  22. foo(std::vector<int>(1)); // OK
  23. foo(b); // OK
  24. foo(d); // OK
  25. // foo(std::vector<A>(1)); // ERROR
  26. // foo(c); // ERROR
  27. // foo(e); // ERROR
  28. return 0;
  29. }
Success #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
Standard output is empty