fork(6) download
  1. namespace detail
  2. {
  3. template<class T, int N>
  4. struct helper
  5. {
  6. static constexpr T pow(const T x){
  7. return helper<T, N-1>::pow(x) * x;
  8. }
  9. };
  10.  
  11. template<class T>
  12. struct helper<T, 1>
  13. {
  14. static constexpr T pow(const T x){
  15. return x;
  16. }
  17. };
  18.  
  19. template<class T>
  20. struct helper<T, 0>
  21. {
  22. static constexpr T pow(const T x){
  23. return 1;
  24. }
  25. };
  26. }
  27.  
  28. template<int N, class T>
  29. T constexpr pow(T const x)
  30. {
  31. return detail::helper<T, N>::pow(x);
  32. }
  33.  
  34. #include <iostream>
  35.  
  36. int main()
  37. {
  38. std::cout << pow<5>(4);
  39. }
  40.  
Success #stdin #stdout 0s 2852KB
stdin
Standard input is empty
stdout
1024