Существует константа с именем __cplusplus
, которую компиляторы C ++ должны установить на версию поддерживаемого стандарта C ++ , см.
#if __cplusplus <= 199711L
#error This library needs at least a C++11 compliant compiler
#endif
В Visual Studio 2010 с пакетом обновления 1 (SP1) установлено значение 199711L, но я не знаю, будут ли производители настолько смелы, чтобы уже увеличить его, если они будут иметь (частичную) поддержку на уровне компилятора по сравнению со стандартной библиотекой C ++ со всеми C + +11 изменений.
Таким образом, определения Boost, упомянутые в другом ответе, остаются единственным разумным способом выяснить, существует ли, например, поддержка потоков C ++ 11 и других специфических частей стандарта.