もっと一般的なconst入力パラメータをfibonacciのconstexpr実装に渡そうとしています。テンプレートのパラメータをintに置き換えると、物事はもう一度hunky-doryになります。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のために、long int型、unsigned long型、などなどのような入力を取ることができconstexprのにテンプレート引数を提供するにはどうすればよい
あなたはそれを動作させるために、このようにそれを働かせることができる: '場合(N <= 1)リターンT {1 }; return fib_ce ... '。 –
条件の両辺を評価するので、これは問題だと思います。 –