Xin lưu ý rằng đây không phải là bản sao của How write a unit test for verifying compiling error? vì tôi không quan tâm đến việc kiểm tra tính chính xác của các thư viện bên ngoài hoặc trình biên dịch.Làm thế nào để đơn vị kiểm tra lỗi biên dịch cố ý của mã mẫu
Nó là điển hình trong C++, đặc biệt khi xử lý mẫu, sử dụng các kỹ thuật ngăn chặn một đoạn mã cụ thể không được biên dịch. Vì chúng có thể phức tạp, cách tốt nhất để đảm bảo rằng các đoạn mã cụ thể nào thực sự tạo ra lỗi trình biên dịch?
Vì thử nghiệm thậm chí không được biên soạn, bạn không thể dựa vào những thứ như boost-test, vì vậy tôi đoán nó nên được tích hợp trong hệ thống xây dựng? Những vấn đề này thường được tiếp cận như thế nào?
Tôi không hiểu .. bạn có thể cung cấp ví dụ cho điều bạn muốn kiểm tra không? –
Ví dụ một lớp mẫu không nên được instanced nếu không có chuyên môn có sẵn cho một loại nhất định, hoặc một phương pháp cụ thể không có sẵn nếu một loại không đáp ứng yêu cầu nhất định, hoặc nói chung kiểm tra hiệu quả của 'boost :: enable_if', vv – UncleZeiv
Cũng chỉ cần viết một trường hợp thử nghiệm mà không nên biên dịch, sau đó kiểm tra xem nó đã không biên dịch .. có thể tìm kiếm thông báo lỗi thích hợp để đảm bảo rằng nó không biên dịch cho quyền * * lý do. –