Ada konstanta bernama __cplusplusyang harus disetel oleh compiler C ++ ke versi standar C ++ yang didukung. Lihat ini
#if __cplusplus <= 199711L
#error This library needs at least a C++11 compliant compiler
#endif
Ini diatur ke 199711L dalam Visual Studio 2010 SP1, tetapi saya tidak tahu apakah vendor akan begitu berani untuk meningkatkannya jika mereka hanya memiliki (sebagian) dukungan tingkat kompiler versus pustaka C ++ standar dengan semua perubahan C ++ 11 .
Jadi definisi Boost yang disebutkan dalam jawaban lain tetap menjadi satu-satunya cara yang masuk akal untuk mengetahui apakah ada, misalnya, dukungan untuk utas C ++ 11 dan bagian spesifik lainnya dari standar.
template <typename... Test> struct compiler_must_support_variadic_templates;. Kesalahan sintaksis akan segera mengungkap masalahnya. (Selain itu, pesan kesalahan yang tepat jauh lebih baik.)