Tôi đã gặp phải điều này trong khi biên soạn một số mã di động trong gcc
. Về cơ bản, mã lạ này biên dịch trong Visual studio thực sự chỉ thổi tâm trí của tôi:Tham chiếu không const ràng buộc với lỗi Visual Studio tạm thời?
class Zebra {int x;};
Zebra goo() {Zebra z; return z;}
void foo(Zebra &x)
{
Zebra y;
x = y;
foo(goo());
}
Visual studio
cho phép điều này bay. gcc
sẽ bắt lỗi này dưới dạng lỗi biên dịch. Điều thú vị là, nếu bạn gõ Zebra vào int, VC++
sẽ khiếu nại. Hành vi khá mâu thuẫn. Suy nghĩ?
Nó không phải là một lỗi, nó là một phần mở rộng trình biên dịch, và một cái ác ở đó. – chris
MSVC hiện có 'cảnh báo C4239: phần mở rộng không chuẩn được sử dụng', nhưng dường như bạn đã tắt cảnh báo đó. – MSalters
Tôi không thấy lý do tại sao bạn cần sử dụng chức năng đệ quy vô hạn để giới thiệu tính năng này. – Neutrino