<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/73443>73443</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
libcxx relies on the existence of ::nullptr_t
</td>
</tr>
<tr>
<th>Labels</th>
<td>
libc++
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Anton3
</td>
</tr>
</table>
<pre>
libcxx's `<cstddef>` currently does:
```cpp
using nullptr_t = ::nullptr_t;
```
`::nullptr_t` comes from `<stddef.h>` (of libc++), which uses `#include_next` to make the compiler look into glibc's `<stddef.h>` for the definition of `::nullptr_t`.
Such behavior confuses some editors, notably CLion Nova, into thinking that `std::nullptr_t` does not exist, which turned off essentially all intellisense features.
The C++ Standard committee decided that `<stddef.h>` exposing `::nullptr_t` is a bug and that `std::nullptr_t` should not rely on `::nullptr_t`:
https://timsong-cpp.github.io/lwg-issues/3484
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEk0Fv4jAQhX-NcxmBEjuQ5pBDS5fTai_de-XYk8Rbx47sCYV_v3KgtGWRVrJAsjJv3nx-I2M0vUNs2OaJbZ4zOdPgQ_PoyDuRtV6fGmtadTwyXkVg25yJnYqkNXZM_GDbHNQcAjqyJ9AeIxOPLH9m-cfvNj8fNU3nmzka14ObrZ0ovBIw8QypSDxe75h4uqm-lbz5PrnwI0bogh8vJs8e18PFJeMPvoM0CuNPy6kZ38H7YNQAc8TzbFwYp-ys8dXhcdElD6N8Q6ABU4_JWAxgvX8D48hDf1a8ornp2vmwVGrsjDNkvAPfwd0J1l9nfJnVAC0O8mB8AOVdt1iMfkRAbciHmNw7T7K1J9j9TMq__EGm28UYDca9JdI0SEodI-k72NKTJRnAo4n0SYTm4FCD7zrAGNGRkdaeQFqb5NFaE9FFhA4lzQHjN_e_B4TdGTO8kHRaBp3gjYYIEwxlNOqrs3-x4XHyS0zuv7WJIKGde5BO_2e-OPjZ6mXCgPYE3t3XvMZ2IJqWEPM943syY_SuX6lpWveGhrldG8_43r73KxPjjJHxvSgfykw3Qteilhk2RZXndV1tizIbmrISgvNabSq1wVJyVWhR5Fg9FB1v61xkpuE5F0XBt0XB86JcY13KutrUm25bK9SSlTmO0ti1tYdx7UOfLZ2bSpSlyKxs0cZlezn_Gm-etjk0qWjVzn1kZW5NpPgpQ4YsXrY70TEYE5-U1yUN6BQucf1OK5uDbb5juqBRfkxs7OHjbzUF_wcVMb6_0lps_w0AAP__qlVniQ">