<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>