fork download
  1. #include <limits>
  2. #include <cstdlib>
  3.  
  4. void bitvec_func()
  5. {
  6. const std::size_t nbits = 1e7;
  7. typedef unsigned char vec_t;
  8. const std::size_t WLEN = std::numeric_limits<vec_t>::digits;
  9. const std::size_t VSIZ = nbits/WLEN+1;
  10. static vec_t bitVec[nbits/VSIZ]; // Compiles fine
  11. }
  12.  
  13. template <typename T>
  14. void bitvec_func()
  15. {
  16. const std::size_t nbits = 1e7;
  17. typedef T vec_t;
  18. const std::size_t WLEN = std::numeric_limits<vec_t>::digits;
  19. const std::size_t VSIZ = nbits/WLEN+1;
  20. static vec_t bitVec[nbits/VSIZ]; // "error: storage size of ‘bitVec’ isn’t constant"
  21. }
  22.  
  23. void flarf()
  24. {
  25. bitvec_func();
  26. bitvec_func<unsigned char>();
  27. }
  28.  
  29. int main()
  30. {
  31. flarf();
  32. }
Success #stdin #stdout 0.01s 2720KB
stdin
Standard input is empty
stdout

Standard output is empty