Chương trình này dẫn đến một ngõ cụt tham lam phân tích không mong muốn:
struct float4x4 {};
class C
{
float4x4 M();
};
float4x4 ::C::M()
{
return float4x4{};
}
: 8: 1: lỗi: không có thành viên nào có tên 'C' trong 'float4x4'; ý bạn chỉ đơn giản là 'C'?
float4x4 :: C :: M ()
^ ~~~~~~~~~~~
Có thể được 'cố định' bằng cách sử dụng kiểu trả về theo sau:
auto ::C::M() -> float4x4
{}
bây giờ tất cả đều tốt
Vì vậy, tôi cho rằng chúng ta không thể đủ điều kiện tên lớp khi sử dụng cú pháp khai báo kiểu trả về?
@Someprogrammerdude yep, hãy xem điều này godbolt.org/z/mt6GHD
—
v.oddou
Phần này
—
rustyx
::C
trông giống như một cách giải quyết cho một số vấn đề khác. Nếu không, nó có thể chỉ đơn giản C
(như trình biên dịch gợi ý;)
@rustyx đó chỉ là phát xạ lại mã cơ học bởi một bộ chuyển mã không muốn thực thi một "tên đủ điều kiện" cực kỳ phức tạp tại vị trí này. phát ra một tên FQ bỏ qua việc tra cứu hoàn toàn và thuận tiện cho các công cụ như vậy.
—
v.oddou
::
, tôi cho rằng không còn cách nào khác.