fork download
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. struct Num
  5. {
  6. Num(int n) : n_(n) { }
  7. int operator ^(int n) { return std::pow(n_, n); }
  8. operator int() const { return n_; }
  9. int n_;
  10. };
  11.  
  12. template <int VAL>
  13. constexpr Num build_num_literal()
  14. {
  15. return VAL;
  16. }
  17.  
  18. template <int VAL, char DIGIT, char... REST>
  19. constexpr Num build_num_literal()
  20. {
  21. return build_num_literal<(10 * VAL + DIGIT - '0'), REST...>();
  22. }
  23.  
  24. template <char... STR>
  25. constexpr Num operator"" _n()
  26. {
  27. return build_num_literal<0, STR...>();
  28. }
  29.  
  30. int main()
  31. {
  32. std::cout << (3_n ^ 4) << '\n';
  33. std::cout << (2_n ^ 8) << '\n';
  34. }
Success #stdin #stdout 0s 3140KB
stdin
Standard input is empty
stdout
81
256