Ten program powoduje niepożądany ślepy zaułek:
struct float4x4 {};
class C
{
float4x4 M();
};
float4x4 ::C::M()
{
return float4x4{};
}
: 8: 1: błąd: brak elementu o nazwie „C” w „float4x4”; miałeś na myśli po prostu „C”?
float4x4 :: C :: M ()
^ ~~~~~~~~~~~
Które można „naprawić” za pomocą końcowego typu zwrotu:
auto ::C::M() -> float4x4
{}
teraz wszystko dobrze.
Rozumiem więc, że nie możemy w pełni zakwalifikować nazwy klasy, używając składni deklaratora typu nagłówek-zwrot?
::C
część wygląda jak obejście innego problemu. W przeciwnym razie mogłoby to być po prostu C
(jak sugeruje kompilator;)
::
, przypuszczam, że nie ma innego wyjścia.