无法在函数定义的 out-of-class 声明符中完全限定 class-name
Impossible to fully qualify class-name in out-of-class declarator of function definition
此程序导致不希望的解析贪婪 dead-end:
struct float4x4 {};
class C
{
float4x4 M();
};
float4x4 ::C::M()
{
return float4x4{};
}
:8:1: error: no member named 'C' in 'float4x4'; did you mean simply 'C'?
float4x4 ::C::M()
^~~~~~~~~~~~
可以 'fixed' 使用尾随 return 类型:
auto ::C::M() -> float4x4
{}
现在一切都很好。
所以我认为在使用 heading-return-type 声明符语法时我们不能完全限定 class-name?
你可以用括号来消除歧义:
float4x4 (::C::M)()
{
return float4x4{};
}
虽然我用 gcc 和 clang(两者都 -pedantic
)进行了测试,但我无法真正告诉您是什么规则使它可以,虽然它不是没有括号。我更喜欢尾随 return 类型。
此程序导致不希望的解析贪婪 dead-end:
struct float4x4 {};
class C
{
float4x4 M();
};
float4x4 ::C::M()
{
return float4x4{};
}
:8:1: error: no member named 'C' in 'float4x4'; did you mean simply 'C'?
float4x4 ::C::M()
^~~~~~~~~~~~
可以 'fixed' 使用尾随 return 类型:
auto ::C::M() -> float4x4
{}
现在一切都很好。
所以我认为在使用 heading-return-type 声明符语法时我们不能完全限定 class-name?
你可以用括号来消除歧义:
float4x4 (::C::M)()
{
return float4x4{};
}
虽然我用 gcc 和 clang(两者都 -pedantic
)进行了测试,但我无法真正告诉您是什么规则使它可以,虽然它不是没有括号。我更喜欢尾随 return 类型。