Я хочу сделать функцию, которая возвращает силу целого. Пожалуйста, прочитайте решение fmuecke в сила целого в С++.
Однако я хочу обобщить его решение на произвольный тип T. Поскольку С++ 11 имеет constexpr, я думаю, это возможно.
Наивно, я попробовал что-то вроде
template<class T, int N>
inline constexpr T pow(const T x){
return pow<N-1>(x) * x;
}
template<class T>
inline constexpr T pow<T, 1>(const T x){
return x;
}
template<class T>
inline constexpr T pow<T, 0>(const T x){
return 1;
}
На самом деле этот подход не удался, поскольку частичная специализация шаблона функции не разрешена.
И еще один вопрос. Я слышал, что до компилятора зависит, будет ли функция constexpr оцениваться во время компиляции или нет. Как заставить его вычислять общий тип. Я где-то читал, что один из самых простых взломов для интегральных consts заключается в том, чтобы обернуть его в std:: integral_const:: значение.