是c ++ 14中的成员函数允许返回类型推导,还是自由函数仅允许返回类型推导?
我问是因为我隐式地认为它会工作,但是在gcc 4.8.1中,我收到一个内部编译器错误(“在gen_type_die_with_usage中”)。第一次遇到这样的神秘错误,所以我有点怀疑。从那时起,我知道他们已经更改了规范。
为了清楚起见,这对我有用:
auto foo() {return 5;}
但这不是:
class Bar{
auto baz() {return 5;}
}
标准草案中允许这样做吗?
是的,根据文件n3582,该标准应该允许它。这是本文的一个例子。
严格要求不需要使用自动返回类型的非定义函数声明,但是对于喜欢在类之外定义成员函数的编码样式很有用:
struct A {
auto f(); // forward declaration
};
auto A::f() { return 42; }
如果在这种情况下允许它,则在其他情况下也应该有效。允许它也是更正交的选择。总的来说,我相信如果将两个功能组合在一起可以起作用,那么它应该起作用。
根据@bamboon的评论,“从gcc 4.9开始仅支持返回类型推导。” 这样就可以解释为什么您没有它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句