如果使用立即函数(用 声明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 错误是否正确?有什么已知的解决方法吗?