Tim*_*ine 5 c++ gcc return-type-deduction c++14
是否允许c ++ 14中的成员函数返回类型推导,或仅适用于自由函数?
我问,因为我有点暗示它会起作用,但是在gcc 4.8.1中我得到一个内部编译器错误("在gen_type_die_with_usage中").我第一次遇到这样一个神秘的错误,所以我有点怀疑; 我知道他们从那时起就改变了规范.
为清楚起见,这对我有用:
auto foo() {return 5;}
Run Code Online (Sandbox Code Playgroud)
但这不是:
class Bar{
auto baz() {return 5;}
}
Run Code Online (Sandbox Code Playgroud)
标准草案允许这样做吗?
是的,根据文件n3582,该标准应该允许它。这是本文的一个例子。
严格地不需要使用自动返回类型来允许非定义的函数声明,但是对于喜欢在类外定义成员函数的编码样式很有用:
struct A {
auto f(); // forward declaration
};
auto A::f() { return 42; }
Run Code Online (Sandbox Code Playgroud)
如果在这种情况下允许它,则在其他情况下也应该有效。允许它也是更正交的选择。总的来说,我相信如果将两个功能组合在一起可以起作用,那么它应该起作用。
根据@bamboon的评论,“从gcc 4.9开始仅支持返回类型推断。” 这样就可以解释为什么您没有它。
| 归档时间: |
|
| 查看次数: |
337 次 |
| 最近记录: |