该程序导致不希望的贪婪解析的死胡同:
struct float4x4 {};
class C
{
float4x4 M();
};
float4x4 ::C::M()
{
return float4x4{};
}
可以使用尾随返回类型来“修复”:
auto ::C::M() -> float4x4
{}
现在一切都好。
因此,我认为在使用heading-return-type声明符语法时,我们不能完全限定类名吗?
最佳答案
您可以使用方括号来消除歧义:
float4x4 (::C::M)()
{
return float4x4{};
}
尽管我用gcc和clang(均为
-pedantic
)进行了测试,但我不能真正告诉您什么规则可以使之正常运行,尽管并非没有括号。我更喜欢尾随返回类型。