Các spec chính thức bao gồm một giá trị cho tiền xử lý vĩ mô __cplusplus
, nhưng như những người khác đã chỉ ra, điều này cho thấy tất cả mọi thứ trong spec được thực hiện. Thêm vào thời điểm này, không có trình biên dịch hiện tại nào (mà tôi biết) thiết lập giá trị thích hợp. Thông số kỹ thuật là tốt và tốt, nhưng các bit hoàn toàn chưa được thực hiện của bất kỳ thông số kỹ thuật nào cần được xem xét dự kiến; giao điểm của spec và hỗ trợ rộng là "chuẩn" thực sự.
Câu hỏi liên quan là "làm cách nào tôi có thể biết liệu ít nhất một số hỗ trợ C++ 0x có được bật không?", Ví dụ: với công tắc biên dịch -std=c++0x
. Câu trả lời cho câu hỏi đó là cụ thể cho trình biên dịch và có thể thay đổi, nhưng cả GCC 4.6 và Clang 2.1 đều đặt macro tiền xử lý __GXX_EXPERIMENTAL_CXX0X__
(và cung cấp giá trị 1
) khi hỗ trợ một phần C++ 0x được bật.
Nhưng macro '__cplusplus' không được đặt thành' 199711L' cho bất kỳ trình biên dịch nào không thực hiện tiêu chuẩn * đầy đủ * C++ 98. – dalle