Có một hằng số được đặt tên __cplusplus
mà trình biên dịch C ++ nên đặt thành phiên bản của tiêu chuẩn C ++ được hỗ trợ, hãy xem điều này
#if __cplusplus <= 199711L
#error This library needs at least a C++11 compliant compiler
#endif
Nó được đặt thành 199711L trong Visual Studio 2010 SP1, nhưng tôi không biết liệu các nhà cung cấp có mạnh dạn tăng nó lên hay không nếu họ chỉ hỗ trợ (một phần) mức trình biên dịch so với thư viện C ++ tiêu chuẩn với tất cả các thay đổi C ++ 11 .
Vì vậy, các định nghĩa của Boost được đề cập trong một câu trả lời khác vẫn là cách lành mạnh duy nhất để tìm ra, ví dụ: có hỗ trợ cho các luồng C ++ 11 và các phần cụ thể khác của tiêu chuẩn hay không.
template <typename... Test> struct compiler_must_support_variadic_templates;
. Một lỗi cú pháp sẽ nhanh chóng tiết lộ vấn đề. (Chỉ là một bên, một thông báo lỗi thích hợp sẽ tốt hơn nhiều.)