consteval function not allowed in default argument to constexpr constructor · Issue #48230 · llvm/llvm-project (original) (raw)
Bugzilla Link | 48886 |
---|---|
Version | 11.0 |
OS | All |
CC | @AaronBallman,@zygoloid |
Extended Description
Hello,
the following valid code is currently rejected by Clang 11 and trunk (https://godbolt.org/z/645McM):
consteval int Fun() { return 0; }
struct Test {
constexpr Test(int loc = Fun()) {}
};
Test t{};
The error is:
<source>:4:28: error: cannot take address of consteval function 'Fun' outside of an immediate invocation
constexpr Test(int loc = Fun()) {}
^
<source>:1:15: note: declared here
consteval int Fun() { return 0; }
^
1 error generated.
Compiler returned: 1
I had a brief communication with Richard Smith who confirmed that the code above is valid.
I assume this bug is similar to #47058
Best,
Andreas