आप इसका उपयोग कर सकते हैं:
#if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1900)
cout << "C++11 is supported";
#else
cout << "C++11 is not supported";
#endif
C ++ 11 के लिए, Visual Studio को छोड़कर अधिकांश कंपाइलर __cplusplusमैक्रो को इसमें सेट करते हैं 201103L, लेकिन Visual Studio का कोई भी संस्करण इसे सेट करता है, 199711Lजो C ++ 11 से पहले अन्य कंपाइलरों के लिए उपयोग किया जाने वाला मान है। यह कोड दृश्य स्टूडियो को छोड़कर सभी संकलक के लिए _cplusplusमैक्रो की तुलना करता है 201103L, और यदि संकलक विज़ुअल स्टूडियो है, तो यह जांचता है कि क्या विज़ुअल स्टूडियो का संस्करण बाद में 2015 की तुलना में है, विज़ुअल स्टूडियो का पहला संस्करण जो पूरी तरह से C ++ 11 का समर्थन करता है (विज़ुअल के लिए) स्टूडियो 2015, _MSC_VERमैक्रो का मूल्य है 1900, इस उत्तर को देखें )।
template <typename... Test> struct compiler_must_support_variadic_templates;। एक सिंटैक्स त्रुटि जल्दी से समस्या को प्रकट करेगी। (एक तरफ के रूप में, एक उचित त्रुटि संदेश बहुत बेहतर है।)