From b4f6af8ee2ea97b8c6f2bca1c2fd728683e68ef5 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Fri, 14 Oct 2016 17:03:16 +0100 Subject: [PATCH] FINAL/OVERRIDE: Define to empty on g++ < 4.7 final/override were only implemented in g++ 4.7. include/ChangeLog 2016-10-14 Pedro Alves * ansidecl.h [__cplusplus >= 201103 && GCC_VERSION < 4007] (FINAL, OVERRIDE): Define as empty. [__cplusplus < 201103 && GCC_VERSION < 4007] (FINAL): Define as __final. [__cplusplus < 201103 && GCC_VERSION >= 4007] (OVERRIDE): Define as empty. --- include/ChangeLog | 9 +++++++++ include/ansidecl.h | 20 +++++++++++++++----- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/include/ChangeLog b/include/ChangeLog index bdff2dd9947..98b2c656466 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,12 @@ +2016-10-14 Pedro Alves + + * ansidecl.h [__cplusplus >= 201103 && GCC_VERSION < 4007] (FINAL, + OVERRIDE): Define as empty. + [__cplusplus < 201103 && GCC_VERSION < 4007] (FINAL): Define as + __final. + [__cplusplus < 201103 && GCC_VERSION >= 4007] (OVERRIDE): Define as + empty. + 2016-10-14 Pedro Alves * ansidecl.h (GCC_FINAL): Delete. diff --git a/include/ansidecl.h b/include/ansidecl.h index 7dd7baaeddf..0c716851e3c 100644 --- a/include/ansidecl.h +++ b/include/ansidecl.h @@ -329,13 +329,23 @@ So instead we use the macro below and test it against specific values. */ this by default (actually GNU++14). */ #if __cplusplus >= 201103 -/* C++11 claims to be available: use it: */ -#define OVERRIDE override -#define FINAL final +/* C++11 claims to be available: use it. final/override were only + implemented in 4.7, though. */ +# if GCC_VERSION < 4007 +# define OVERRIDE +# define FINAL +# else +# define OVERRIDE override +# define FINAL final +# endif +#elif GCC_VERSION >= 4007 +/* G++ 4.7 supports __final in C++98. */ +# define OVERRIDE +# define FINAL __final #else /* No C++11 support; leave the macros empty: */ -#define OVERRIDE -#define FINAL +# define OVERRIDE +# define FINAL #endif #ifdef __cplusplus -- 2.30.2