Program ini menghasilkan jalan buntu keserakahan yang tidak diinginkan:
struct float4x4 {};
class C
{
float4x4 M();
};
float4x4 ::C::M()
{
return float4x4{};
}
: 8: 1: error: tidak ada anggota bernama 'C' di 'float4x4'; maksud Anda hanya 'C'?
float4x4 :: C :: M ()
^ ~~~~~~~~~~~
Yang bisa 'diperbaiki' menggunakan tipe trailing return:
auto ::C::M() -> float4x4
{}
sekarang semuanya baik-baik saja.
Jadi saya pikir kita tidak bisa sepenuhnya memenuhi syarat nama kelas saat menggunakan sintaks deklarator tipe-return-type?
@Someprogrammerdude ya, lihat ini godbolt.org/z/mt6GHD
—
v.oddou
Bagian ini
—
rustyx
::C
terlihat seperti solusi untuk beberapa masalah lainnya. Kalau tidak, itu bisa saja C
(seperti yang disarankan oleh kompiler;)
@rustyx itu hanya pemindahan kode secara mekanis oleh transpiler yang tidak ingin menjalankan "mencari nama yang paling tidak memenuhi syarat" yang sangat kompleks pada posisi ini. memancarkan look-bypass nama FQ sepenuhnya dan nyaman untuk alat tersebut.
—
v.oddou
::
, saya kira tidak ada cara lain.