c++11-compat.h: #error if compiling with gcc-4.7+ in C++ mode and C++ 2011 mode isn...
authorDavid Korth <gerbilsoft@gerbilsoft.com>
Wed, 2 Sep 2015 02:53:46 +0000 (22:53 -0400)
committerDavid Korth <gerbilsoft@gerbilsoft.com>
Wed, 2 Sep 2015 02:53:46 +0000 (22:53 -0400)
We can't check earlier versions because g++ wasn't setting the value of
__cplusplus correctly. g++ versions earlier than 4.7 set __cplusplus to 1
instead of the relevant standard version, i.e. 199711L for C++ 1998/2003
and 201103L for C++ 2011.
set to the C++ standard version.

src/c++11-compat.h

index 38e0974..639c20e 100644 (file)
 
 /* Some versions of gcc implement parts of C++11, but not all of it. */
 
+/* For gcc-4.7+, make sure we're compiling with -std=c++11 or -std=gnu++11. */
+/* Older versions didn't set the correct value for __cplusplus. */
+#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7))
+#if __cplusplus < 201103L
+#error Please compile with -std=c++11 or -std=gnu++11.
+#endif /* __cplusplus */
+#endif /* __GNUC__ */
+
 /* Explicit virtual override: Added in gcc-4.7. */
 #if (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7))
 #define CXX11_COMPAT_OVERRIDE