Ce programme se traduit par une impasse de gourmandise d'analyse indésirable:
struct float4x4 {};
class C
{
float4x4 M();
};
float4x4 ::C::M()
{
return float4x4{};
}
: 8: 1: erreur: aucun membre nommé 'C' dans 'float4x4'; vouliez-vous simplement dire «C»?
float4x4 :: C :: M ()
^ ~~~~~~~~~~~
Qui peut être «corrigé» en utilisant le type de retour arrière:
auto ::C::M() -> float4x4
{}
maintenant tout va bien.
Je suppose donc que nous ne pouvons pas entièrement qualifier le nom de classe lors de l'utilisation de la syntaxe de déclaration de type en-tête-retour?
::C
partie ressemble à une solution de contournement pour un autre problème. Sinon, cela aurait pu être tout simplement C
(comme le suggère le compilateur;)
::
, je suppose qu'il n'y a pas d'autre moyen.