fork download
  1. #include <iostream>
  2.  
  3. template<std::uintmax_t, char...>
  4. struct strtoi_impl;
  5.  
  6. template<std::uintmax_t Rest, char Last>
  7. struct strtoi_impl<Rest, Last> {
  8. static constexpr std::uintmax_t value = Rest + (Last - '0');
  9. };
  10.  
  11. template<std::uintmax_t Rest, char Head, char... Tail>
  12. struct strtoi_impl<Rest, Head, Tail...> {
  13. static constexpr std::uintmax_t value =
  14. strtoi_impl<(Rest + (Head - '0')) * 10, Tail...>::value;
  15. };
  16.  
  17. template<char... Number>
  18. struct strtoi {
  19. static constexpr std::uintmax_t value =
  20. strtoi_impl<0, Number...>::value;
  21. };
  22.  
  23. int main()
  24. {
  25. static_assert(strtoi<'1', '2', '3'>::value == 123, "no.");
  26. return 0;
  27. }
  28.  
Success #stdin #stdout 0s 3292KB
stdin
Standard input is empty
stdout
Standard output is empty