小编zat*_*tm8的帖子

decltype扣除了类内定义函数的结果

为什么

struct MyStruct {
   auto foo () { return 1; }
   auto bar () { return foo(); }
};
Run Code Online (Sandbox Code Playgroud)

编译,但是当使用这样的尾随返回类型时:

struct MyStruct {
   auto foo () { return 1; }
   auto bar () -> decltype(foo()) { return foo(); }
};
Run Code Online (Sandbox Code Playgroud)

编译失败了

错误:在定义返回类型之前,不能使用带有推导返回类型的函数'foo'

这是实现部分的正确行为吗?

c++ language-lawyer return-type-deduction c++14

22
推荐指数
1
解决办法
318
查看次数