[llvm-bugs] [Bug 38216] New: No ::nullptr_t in header <stddef.h>
via llvm-bugs
llvm-bugs at lists.llvm.org
Wed Jul 18 17:54:50 PDT 2018
https://bugs.llvm.org/show_bug.cgi?id=38216
Bug ID: 38216
Summary: No ::nullptr_t in header <stddef.h>
Product: clang
Version: trunk
Hardware: PC
OS: Linux
Status: NEW
Severity: enhancement
Priority: P
Component: C++
Assignee: unassignedclangbugs at nondot.org
Reporter: zhonghao at pku.org.cn
CC: dgregor at apple.com, llvm-bugs at lists.llvm.org
clang++ rejects the following code:
#include <stddef.h>
::nullptr_t n;
"3|error: 'nullptr_t' in namespace '::' does not name a type"
This code is supposed to be accepted, because [depr.c.headers] p2 says:
"Every C header, each of which has a name of the form name.h, behaves as if
each name placed in the standard library namespace by the corresponding cname
header is placed within the global namespace scope."
Paolo Carlini has suggested to perform this change near to existing C++11-aware
code in stddef.h:
#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) \
|| (defined(__cplusplus) && __cplusplus >= 201103L)
#ifndef _GCC_MAX_ALIGN_T
#define _GCC_MAX_ALIGN_T
/* Type whose alignment is supported in every context and is at least
as great as that of any standard type not using alignment
specifiers. */
typedef struct {
long long __max_align_ll __attribute__((__aligned__(__alignof__(long
long))));
long double __max_align_ld __attribute__((__aligned__(__alignof__(long
double))));
} max_align_t;
#endif
#endif /* C11 or C++11. */
BTW, I tried g++. It accepts the above code sample.
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20180719/d8820e70/attachment.html>
More information about the llvm-bugs
mailing list