Pointer to consteval function not allowed in default argument to consteval function · Issue #47058 · llvm/llvm-project (original) (raw)
Bugzilla Link | 47714 |
---|---|
Resolution | DUPLICATE |
Resolved on | Oct 21, 2021 06:09 |
Version | trunk |
OS | All |
Reporter | LLVM Bugzilla Contributor |
CC | @AaronBallman,@efriedma-quic,@zygoloid,@synopsys-sig-compiler-frontends |
Extended Description
The following example is given both in the current C++ draft standard: http://eel.is/c++draft/expr.const#11 and the immediate functions proposal: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1073r3.html
consteval int f() { return 42; }
consteval auto g() { return f; }
consteval int h(int (*p)() = g()) { return p(); }
constexpr int r = h(); // OK
and although examples not normative AFAICT this is meant to be valid but clang rejects this although gcc does accept it, see the following godbolt: https://godbolt.org/z/WW7G9q