我有这个代码
struct Foo {
static constexpr auto get() { return static_cast<int>(3); }
Foo(int t = get()) {}
};
int main() {
Foo t;
}
使用clang ++编译失败,出现以下错误
test.cpp:7:17: error: function 'get' with deduced return type cannot be used before it is defined
Foo(int t = get()) {}
^
test.cpp:5:27: note: 'get' declared here
static constexpr auto get() { return static_cast<int>(3); }
^
1 error generated.
错误看起来像Use of 'auto func(int)' before deduction of 'auto' in C++14,但就我而言,该函数是在...之前定义的...将函数按原样移动到类之外可以成功进行编译(这对我来说很奇怪,因为我看不到差异)。
我尝试了Gcc,它也抱怨。
为什么这里使用auto
会格式错误?