Hay una constante denominada __cplusplus
que los compiladores de C ++ deben establecer en la versión del estándar C ++ compatible; consulte esto
#if __cplusplus <= 199711L
#error This library needs at least a C++11 compliant compiler
#endif
Está configurado en 199711L en Visual Studio 2010 SP1, pero no sé si los proveedores serán tan audaces para aumentarlo ya si solo tienen soporte (parcial) a nivel de compilador en comparación con una biblioteca C ++ estándar con todos los cambios de C ++ 11 .
Por lo tanto, las definiciones de Boost mencionadas en otra respuesta siguen siendo la única forma sensata de averiguar si hay, por ejemplo, soporte para subprocesos C ++ 11 y otras partes específicas del estándar.
template <typename... Test> struct compiler_must_support_variadic_templates;
. Un error de sintaxis revelaría rápidamente el problema. (Solo como acotación al margen, un mensaje de error adecuado es mucho mejor.)