constexpr

Why is it ill-formed to have multi-line constexpr functions?

According to Generalized Constant Expressions—Revision 5 the following is illegal. constexpr int g(int n) // error: body not just ‘‘return expr’’ { int r = n; while (--n > 1) r *= n; return r; } This is because all 'constexpr' functions are required to be of the form { return expression; }. I can't see any reason that this...