>From 566305a532c71e9fab18b257c1e3333eab3736bb Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 3 Aug 2015 12:34:38 -0700 Subject: [PATCH] Improve port of stdalign to C++11 Problem reported by Sundaram in: http://lists.gnu.org/archive/html/bug-gnulib/2015-08/msg00003.html * lib/stdalign.in.h (alignof, alignas): Don't define if C++11 or newer. (__alignas_is_defined): Define if C++11 or newer. --- ChangeLog | 8 ++++++++ lib/stdalign.in.h | 9 +++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 855592c..b816e80 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2015-08-03 Paul Eggert + + Improve port of stdalign to C++11 + Problem reported by Sundaram in: + http://lists.gnu.org/archive/html/bug-gnulib/2015-08/msg00003.html + * lib/stdalign.in.h (alignof, alignas): Don't define if C++11 or newer. + (__alignas_is_defined): Define if C++11 or newer. + 2015-08-01 Assaf Gordon (tiny change) pmccabe2html: fix gawk regex escaping diff --git a/lib/stdalign.in.h b/lib/stdalign.in.h index 9b6c5ab..9a7d5ed 100644 --- a/lib/stdalign.in.h +++ b/lib/stdalign.in.h @@ -64,7 +64,9 @@ # define _Alignof(type) offsetof (struct { char __a; type __b; }, __b) # endif #endif -#define alignof _Alignof +#if ! (defined __cplusplus && 201103 <= __cplusplus) +# define alignof _Alignof +#endif #define __alignof_is_defined 1 /* alignas (A), also known as _Alignas (A), aligns a variable or type @@ -105,8 +107,11 @@ # define _Alignas(a) __declspec (align (a)) # endif #endif -#if defined _Alignas || (defined __STDC_VERSION && 201112 <= __STDC_VERSION__) +#if ((defined _Alignas && ! (defined __cplusplus && 201103 <= __cplusplus)) \ + || (defined __STDC_VERSION && 201112 <= __STDC_VERSION__)) # define alignas _Alignas +#endif +#if defined alignas || (defined __cplusplus && 201103 <= __cplusplus) # define __alignas_is_defined 1 #endif -- 2.1.0