0
Why no output for constexpr and normal fibonaci
Hi I thought constexpr is compile time evaluation and fibonaci of 43 with constexpr will be quick compared to non constexpr version Whats missing here as I am not getting any output? https://code.sololearn.com/cFR00PH9KfCR/?ref=app
2 ответов
+ 3
constexpr doesn't necessarily mean that the function *will* be evaluated at compile-time. It just specifies that it *can* be.
You need to make a constexpr variable and assign the result of the function to it, which will force the function to be evaluated at compile time.
https://code.sololearn.com/cvfWYc0CmP84/?ref=app
The error now, as is said in the error message, is because fibonacci<43> exceeds the operation count limit.
The recursive implementation of fibonacci results in a huge number of calls to the fibonacci function (like, a very huge number) since there is no memoization of the function calls AFAIK in GCC.
You can use the iterative approach instead for the calculating the results
https://code.sololearn.com/cAV7dr59LYlm/?ref=app
It works, and as expected, the fibonacciOld() call fails to evaluate in the time limit, while fibonacci1<43>() works just fine
0
Thanks XXX