[C++] Вопрос по шаблонам
табличко
У тебя, конечно, работает, но по моему не так, как ты хочешь. Ты этим способом не сократил количество умножений.
Все работает как и должно, в том числе и для отрицательных n.
Насчет "стандартных решений" - я не в курсе. Но несколько простых написать сам могу. Всякие биномиальные коэффициенты и факториалы можно и полностью сделать готовыми в compile-time, если очень надо. Факториалы, например, можно посчитать так
template <unsigned int N>
class CFact {
public:
enum {
result = N*CFact<N-1>::result
};
};
template <>
class CFact<0> {
public:
enum {
result = 1
};
};
template <int n>
double ipow(double a) {
double x = ipow<n/2>(a);
return x*x*ipow<n%2>(a);
}
Оставить комментарий
nomad
Есть такой шаблон функции для вычисления целых степеней чисел:Все работает как и должно, в том числе и для отрицательных n.
Но это все-таки изобретение велосипеда. Нет ли какого-нибудь
более или менее "стандартного" решения для всякой
compile-time арифметики? В boost::mpl вроде бы есть только
базовые операции (сложение, умножение и т.д. а хотелось
бы что-то вроде факториалов, биномиальных коэффициентов и
того, что приведено на листинге в этом посте.
А?