โปรแกรมนี้ส่งผลให้เกิดการแยกวิเคราะห์ความโลภที่ไม่ต้องการ:
struct float4x4 {};
class C
{
float4x4 M();
};
float4x4 ::C::M()
{
return float4x4{};
}
: 8: 1: ข้อผิดพลาด: ไม่มีสมาชิกชื่อ 'C' ใน 'float4x4'; คุณหมายถึง 'C' อย่างง่ายๆหรือเปล่า
float4x4 :: C :: M ()
^ ~~~~~~~~~~~
ซึ่งสามารถ 'แก้ไข' โดยใช้ประเภทการส่งคืนต่อท้าย:
auto ::C::M() -> float4x4
{}
ตอนนี้ทุกอย่างดี
ดังนั้นฉันคิดว่าเราไม่สามารถผ่านการรับรอง class-name เมื่อใช้ไวยากรณ์
@Someprogrammerdude อ๋อลองดูgodbolt.org/z/mt6GHD
—
v.oddou
::C
ส่วนหนึ่งดูเหมือนว่าวิธีแก้ปัญหาสำหรับปัญหาอื่น ๆ บาง มิฉะนั้นอาจเป็นเรื่องง่ายC
(เช่นคอมไพเลอร์แนะนำ;)
@rustyx เป็นเพียงการปล่อยรหัสเชิงกลโดย transpiler ที่ไม่ต้องการเรียกใช้ชื่อ "ค้นหาชื่อที่มีคุณสมบัติน้อยที่สุด" ที่ซับซ้อนเป็นพิเศษในตำแหน่งนี้ การเปล่งชื่อ FQ- ข้ามการค้นหาอย่างสมบูรณ์และสะดวกสำหรับเครื่องมือดังกล่าว
—
v.oddou
::
ฉันคิดว่าไม่มีวิธีอื่น