是否可以从模板函数参数中推断出非类型模板参数?
考虑这个简单的模板:
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?