在 Visual Studio 的 clang 中启用 C++14

Enabling C++14 in clang in Visual Studio

我已经安装了 clang 3.7,我正在 visual studio 中使用它。当我尝试编译时:

auto f()
{
return 2;
}

我收到错误消息说这是 C++14 的未来。我试过了:
-std=c++14 作为编译器参数但随后出现错误:

错误 1 ​​错误:未知参数:'-std=c++14' C:\Users...\visual studio 2013\Projects\ConsoleApplication8\ConsoleApplication8\clang-cl.exe ConsoleApplication8.

关于如何在 Visual Studio 2013 下启用 clang 中的 c++14 功能有什么想法吗?

编辑:
我必须补充一点,我能够在 Visual Studio 下使用此编译器编译和构建 c++11 代码,没有任何问题。

clang-cl 不使用与传统 clang 相同的选项语法 - 它应该模仿 Visual Studio 的 cl 命令行,而不是 clang 的命令行。

例如,来自 clang-cldocumentation:

CL.EXE COMPATIBILITY OPTIONS:
  /?                     Display available options
  /arch:<value>          Set architecture for code generation
  /C                     Don't discard comments when preprocessing
  /c                     Compile only
  /D <macro[=value]>     Define macro
  ...

请注意,这些选项类似于 Microsoft 的 cl 选项语法,而不是 clang 的选项语法。

但是,他们有一个小的直通选项来支持像您这样的案例:

OPTIONS:
  ...
  -Xclang <arg>         Pass <arg> to the clang compiler
  -mllvm <value>        Additional arguments to forward to LLVM's option processing

因此,调用 clang-cl -Xclang -std=c++14 似乎是您最好的选择。

我在 clang-cl 上工作。正如 antiduh 所说,clang-cl 试图模仿 Visual Studio 的 clcl 直到并包括 c++14 都没有用于启用语言模式的开关,它总是启用所有最新的东西。因此,clang-cl 也是如此。 MSVC 在 MSVC 2015 中获得了一些 C++14 支持,因此如果您告诉 clang-cl 您希望它模拟 MSVC 2015 或更高版本,它会自动启用 C++14。默认情况下,clang-cl 会模拟系统上的 MSVC 版本。您可以显式传递 -fmsc-version=1900 以强制模拟 2015,然后将隐式启用 C++14。

自 MSVC 2017 起,cl.exe 支持 /std: flag,因此 clang-cl 也支持它。它可用于启用 C++14(最低级别)、C++17、C++20 或最新的已知版本。

-Xclang 标志是内部标志,不被视为稳定的接口。所以不要使用那些。