Advertisement
Guest User

Untitled

a guest
Oct 21st, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.94 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. extern const char HELLO[] = "Hello World!!!";
  4.  
  5. template<const char _S[]>
  6. constexpr size_t len1() { return sizeof(_S); }
  7.  
  8. template<const char _S[]>
  9. constexpr size_t len2() { return std::strlen(_S); }
  10.  
  11. template<const char _S[], std::size_t _Sz=sizeof(_S)>
  12. constexpr size_t len3() { return _Sz-1; }
  13.  
  14. template<unsigned int _N>
  15. constexpr size_t len5(const char(&str)[_N])
  16. {
  17. return _N-1;
  18. }
  19.  
  20. int main() {
  21. enum {
  22. l1 = len1<HELLO>(),
  23. // l2 = len2<HELLO>() does not compile
  24. l3 = len3<HELLO>(),
  25. l4 = len3<HELLO, sizeof(HELLO)>(),
  26. l5 = len5(HELLO),
  27. };
  28. std::cout << l1 << std::endl; // outputs 4
  29. // std::cout << l2 << std::endl;
  30. std::cout << l3 << std::endl; // outputs 3
  31. std::cout << l4 << std::endl; // outputs 14
  32. std::cout << l5 << std::endl; // outputs 14
  33. return 0;
  34. }
  35.  
  36. template<const char _S[unsigned int _N]>
  37. constexpr size_t len6() { return _N-1; }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement