【发布时间】:2021-10-17 17:55:26
【问题描述】:
如果使用立即函数(用consteval 声明)来默认初始化全局函数参数,就像这里
consteval int foo() { return 0; }
int bar(int a = foo()) { return a; }
int main() { return bar(); }
然后 Clang 编译器发出错误:
error: cannot take address of consteval function 'foo' outside of an immediate invocation
int bar(int a = foo()) { return a; }
^
当其他编译器接受代码时,演示:https://gcc.godbolt.org/z/z8h7MPaGx
假设代码格式正确并且只是一个 Clang 错误是否正确?是否有任何已知的解决方法?
【问题讨论】:
-
确实,已知bug:bugs.llvm.org/show_bug.cgi?id=48886
标签: c++ c++20 clang++ consteval