<html>
<head>
<base href="https://bugs.llvm.org/">
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - Clang 10.0-r2 includes unsupported headers from msvc >= 16.4 on Windows when in C++2a"
href="https://bugs.llvm.org/show_bug.cgi?id=44956">44956</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>Clang 10.0-r2 includes unsupported headers from msvc >= 16.4 on Windows when in C++2a
</td>
</tr>
<tr>
<th>Product</th>
<td>clang
</td>
</tr>
<tr>
<th>Version</th>
<td>10.0
</td>
</tr>
<tr>
<th>Hardware</th>
<td>PC
</td>
</tr>
<tr>
<th>OS</th>
<td>Windows NT
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>enhancement
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>C++2a
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedclangbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>mjklaim@gmail.com
</td>
</tr>
<tr>
<th>CC</th>
<td>blitzrakete@gmail.com, erik.pilkington@gmail.com, llvm-bugs@lists.llvm.org, richard-llvm@metafoo.co.uk
</td>
</tr></table>
<p>
<div>
<pre>Context
-------
- `clang` 10.0-r2
- Windows 10
- `msvc` 16.4.4/16.4.5/16.5-preview
- (`build2` v0.12.0 as build system, but it doesn't seem specific; `build2`
will find the latest msvc install on the system to provide it to clang; all the
following commands are extracts from `build2`'s verbose output)
How To Reproduce
----------------
main.cxx:
```
#include <utility> // any header potentially including <concepts>
int main() {}
```
Execute:
```
clang++ -std=c++2a -D_MT -D_DLL -w -x c++ -MQ ^ -M -MG
"C:\Users\klaim\temp\minimaltest\main.cxx"
```
(or with build2:
buildfile:
```
cxx.std = latest
using cxx
exe{test} : cxx{main}
```
Execute: `b config.cxx=clang++`
)
Observed:
---------
```
In file included from C:\Users\klaim\temp\minimaltest\main.cxx:1:
In file included from C:\Program Files (x86)\Microsoft Visual
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\utility:15:
C:\Program Files (x86)\Microsoft Visual
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\concepts:14:2: error:
Despite the presence of some Clang-related bits, this header currently does not
support
Clang. You can define _SILENCE_CLANG_CONCEPTS_MESSAGE to silence this
message and acknowledge that this is unsupported.
#error Despite the presence of some Clang-related bits, this header currently
does not support Clang. \
^
^: C:\Users\klaim\temp\minimaltest\main.cxx \
C:\Program\ Files\ (x86)\Microsoft\ Visual\
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\utility \
C:\Program\ Files\ (x86)\Microsoft\ Visual\
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\yvals_core.h \
C:\Program\ Files\ (x86)\Microsoft\ Visual\
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\vcruntime.h \
C:\Program\ Files\ (x86)\Microsoft\ Visual\
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\sal.h \
C:\Program\ Files\ (x86)\Microsoft\ Visual\
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\concurrencysal.h \
C:\Program\ Files\LLVM\lib\clang\10.0.0\include\vadefs.h \
C:\Program\ Files\ (x86)\Microsoft\ Visual\
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\vadefs.h \
C:\Program\ Files\ (x86)\Microsoft\ Visual\
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\xkeycheck.h \
C:\Program\ Files\ (x86)\Microsoft\ Visual\
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\type_traits \
C:\Program\ Files\ (x86)\Microsoft\ Visual\
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\xstddef \
C:\Program\ Files\ (x86)\Microsoft\ Visual\
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\cstddef \
C:\Program\ Files\LLVM\lib\clang\10.0.0\include\stddef.h \
C:\Program\ Files\LLVM\lib\clang\10.0.0\include\__stddef_max_align_t.h \
C:\Program\ Files\ (x86)\Microsoft\ Visual\
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\xtr1common \
C:\Program\ Files\ (x86)\Microsoft\ Visual\
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\cstdlib \
C:\Program\ Files\ (x86)\Windows\ Kits\10\Include\10.0.17763.0\ucrt\math.h \
C:\Program\ Files\ (x86)\Windows\
Kits\10\Include\10.0.17763.0\ucrt\corecrt_math.h \
C:\Program\ Files\ (x86)\Windows\ Kits\10\Include\10.0.17763.0\ucrt\corecrt.h
\
C:\Program\ Files\ (x86)\Windows\ Kits\10\Include\10.0.17763.0\ucrt\stdlib.h
\
C:\Program\ Files\ (x86)\Windows\
Kits\10\Include\10.0.17763.0\ucrt\corecrt_malloc.h \
C:\Program\ Files\ (x86)\Windows\
Kits\10\Include\10.0.17763.0\ucrt\corecrt_search.h \
C:\Program\ Files\ (x86)\Windows\
Kits\10\Include\10.0.17763.0\ucrt\corecrt_wstdlib.h \
C:\Program\ Files\LLVM\lib\clang\10.0.0\include\limits.h \
C:\Program\ Files\ (x86)\Microsoft\ Visual\
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\limits.h \
C:\Program\ Files\ (x86)\Microsoft\ Visual\
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\initializer_list \
C:\Program\ Files\ (x86)\Microsoft\ Visual\
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\concepts
1 error generated.
```
Expected
--------
To compile successfully, in the same way clang 9.0.1 compiles successfully in
the same context.
Observations
------------
1. As mentionned, switching clang to 9.0.1 removes the issue.
2. The issue appears only with `-std=c++2a`, not with `-std=1z` (C++17)
3. Looking at `<utility>` line 15 we can see:</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>