Dieses Programm führt zu einer unerwünschten Sackgasse bei der Analyse von Gier:
struct float4x4 {};
class C
{
float4x4 M();
};
float4x4 ::C::M()
{
return float4x4{};
}
: 8: 1: Fehler: Kein Mitglied mit dem Namen 'C' in 'float4x4'; Meinten Sie einfach "C"?
float4x4 :: C :: M ()
^ ~~~~~~~~~~~~
Was mit dem Trailing-Return-Typ 'behoben' werden kann:
auto ::C::M() -> float4x4
{}
jetzt alles gut.
Ich gehe also davon aus, dass wir den Klassennamen bei Verwendung der Deklaratorsyntax vom Typ "Überschrift-Rückgabetyp" nicht vollständig qualifizieren können.
::C
Teil sieht aus wie eine Problemumgehung für ein anderes Problem. Sonst hätte es einfach sein können C
(wie der Compiler vorschlägt;)
::
, gibt es wohl keinen anderen Weg.