Существует константа с именем, __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 и других конкретных частей стандарта.
template <typename... Test> struct compiler_must_support_variadic_templates;. Синтаксическая ошибка быстро выявит проблему. (