我想将一个更通用的const输入参数传递给斐波纳契的constexpr实现。当我用int替换模板参数时,事情又是一片混乱。模板参数constexpr
#include<iostream>
template <typename T>
constexpr auto fib_ce(T n) {
return (n>1) ? fib_ce(n-1)+fib_ce(n-2) : 1;
}
int main() {
std::cout<<fib_ce(4)<<"\n";
}
这是错误我得到:
g++ -std=c++14 -o constexpr_fib constexpr_fib.cpp
constexpr_fib.cpp:4:19: fatal error: recursive template instantiation exceeded maximum depth of 256
return (n>1) ? fib_ce(n-1)+fib_ce(n-2) : 1;
^
如何为constexpr提供一个模板参数,可以采取像长整型,无符号长,等等等等这constexpr
输入
您可以解决像这样,使其工作:'如果(N <= 1)返回牛逼{1 };返回fib_ce ...'。 –
我想这是一个问题,因为它评估条件的两面。 –