msbuild-bin / cl.exe не знает, что такое std :: apply? - PullRequest
0 голосов
/ 07 апреля 2019

Я играл с VS2019 и обнаружил, что он работает с Clang. Поэтому я установил clang, и у меня возникли некоторые проблемы с ним при работе с VS2019. Однако эта проблема основана только на компиляторе. Кажется, что если бы я должен был скомпилировать с командной строкой:

C:\Program Files\LLVM\msbuild-bin\cl.exe /std:c++17 source.cpp

Где source.cpp содержит:

#include <tuple>
#include <iostream>

void fn(int x)
{
        std::cout << x << std::endl;
}

int main()
{
  std::tuple<int> x(1);
  apply(fn, x);
  return 0;
}

Это раздражает:

clang-cl.exe: warning: argument unused during compilation: '/std:c++17' [-Wunused-command-line-argument]
In file included from source.cpp:1:
In file included from C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.20.27508\include\tuple:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.20.27508\include\new:6:
In file included from C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.20.27508\include\exception:7:
In file included from C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.20.27508\include\yvals.h:7:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.20.27508\include\yvals_core.h(334,2):  error: STL1000: Unexpected compiler version, expected Clang 7 or newer.
#error STL1000: Unexpected compiler version, expected Clang 7 or newer.
 ^
source.cpp(12,3):  error: use of undeclared identifier 'apply'
  apply(fn, x);
  ^
2 errors generated.

Однако, если я использую:

"C:\Program Files\LLVM\bin\clang-cl" /std:c++17 source.cpp

Все хорошо.

Дело в том, что VS2019 использует бывший исполняемый файл компилятора. Как мне заставить его использовать последний?

Единственное, что я сделал, чтобы сменить строителя, - это пошел и поменял этот предмет:

settings dialog

Есть что-нибудь еще, что я должен изменить?

...