Возможно ли вывести параметр шаблона не типа из параметра шаблонной функции?
Рассмотрим этот простой шаблон:
template <int N> constexpr int factorial()
{
return N * factorial<N - 1>();
}
template <> constexpr int factorial<0>()
{
return 1;
}
template <> constexpr int factorial<1>()
{
return 1;
}
Я хотел бы иметь возможность изменить factorial
так, чтобы я мог альтернативно вызывать его следующим образом:
factorial(5);
и позволить компилятору определить значение N во время компиляции. Возможно ли это? Может быть, с каким-нибудь причудливым дополнением C++11?