Існує константа з ім'ям , __cplusplus
що компілятори C ++ слід встановити в версії C ++ стандарт підтримується побачити це
#if __cplusplus <= 199711L
#error This library needs at least a C++11 compliant compiler
#endif
В Visual Studio 2010 SP1 він встановлений у 199711L, але я не знаю, чи будуть постачальники настільки сміливими, щоб збільшити його, якщо вони просто мають (часткову) підтримку рівня компілятора порівняно зі стандартною бібліотекою C ++ зі всіма змінами C ++ 11 .
Отже, визначення Boost, згадані в іншій відповіді, залишаються єдиним розумним способом з'ясувати, чи є, наприклад, підтримка C ++ 11 потоків та інших конкретних частин стандарту.
template <typename... Test> struct compiler_must_support_variadic_templates;
. Помилка синтаксису швидко виявить проблему. (Як і вбік, правильне повідомлення про помилку набагато краще.)