In the following program, I have added an explicit return statement in func(), but the compiler gives me the following error:
m.cpp: In function ‘constexpr int func(int)’: m.cpp:11:1: error: body of constexpr function ‘constexpr int func(int)’ not a return-statement } This is the code:
#include <iostream> using namespace std; constexpr int func (int x); constexpr int func (int x) { if (x<0) x = -x; return x; // An explicit return statement } int main() { int ret = func(10); cout<<ret<<endl; return 0; } I have compiled program in a g++ compiler using the following command.
g++ -std=c++11 m.cpp I have added return statement in function, then Why I got above error?
constexprfunction return values can depend on their arguments. What would be the point otherwise?constexprbefore the compiler refuses to compile-time evaluate it?returnstatement. Since C++14, the sky (and [dcl.constexpr] and Annex B :-) ) is the limit. Similar to how template metaprogramming works.