Proposed resolution (January, 2011): Add the following bullet in 7.7 [expr.const] paragraph 2: an invocation of a constexpr function or a
constexpr constructor that would exceed the
implementation-defined recursion limit (see annex Clause Annex B [implimits]);
Notes from the November, 2010 meeting: The CWG was of mixed opinion as to whether an infinite recursion
in a constexpr function should be ill-formed or simply render an
expression non-constant.
It is not clear what happens when a program violates the limits on
constexpr function recursion in a context that does not require a
constant expression. For example, (Presumably the “within its resource limits” caveat of
4.1 [intro.compliance] paragraph 2 would effectively result in
undefined behavior in a context that required a constant expression.)
constexpr int f(int i) { return f(i); }
const int i = f(1); // error, undefined behavior, or dynamic initialization?