静态成员函数中的返回值类型自动推导失败

时间:2018-11-02 09:54:08

标签: c++ c++14 auto

我有这个代码

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会格式错误?

0 个答案:

没有答案