fork download
  1. #include <cstddef>
  2. #include <string>
  3. #include <type_traits>
  4. #include <iostream>
  5.  
  6. namespace a {
  7. constexpr int operator""_x(const char *str, std::size_t size) {
  8. return size;
  9. }
  10. }
  11.  
  12. constexpr int f(const char* str)
  13. {
  14. return a::operator""_x(str, 3);
  15. // std::char_traits::length is constexpr since C++17
  16. }
  17.  
  18. int main()
  19. {
  20. const char *str = "333";
  21. using str_char_type = std::remove_const_t<std::remove_pointer_t<decltype(str)>>;
  22.  
  23. static_assert(std::is_same<
  24. char,
  25. str_char_type
  26. >::value, "err");
  27.  
  28. std::cout << f(str);
  29.  
  30. return 0;
  31. }
  32.  
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
3