无法在 Apple LLVM 7.3.0 上对 std::tuple 使用 "using" 声明

Cannot use "using" declaration for std::tuple on Apple LLVM 7.3.0

我试图在我的程序中使用 tuple,但出于某种原因,我无法使用 using 声明来简化调用。例如:

#include <tuple>

using std::tuple;

...

这会在尝试编译时引发错误:

error: no member named 'tuple' in namespace 'std'

我可以将 using 声明用于其他内容(如 std::stringstd::get 等),这很好。我想我已经把它缩小到一个编译器问题,但我无法控制我要使用哪个编译器(大学服务器),而且我在网上找不到任何显示对此缺乏支持的东西 header 或任何东西。这是我的编译器信息:

$ clang++ -v

Apple LLVM version 7.3.0 (clang-703.0.31)
Target: x86_64-apple-darwin15.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

有什么想法吗?这是它在其他地方工作的一个例子:http://cpp.sh/5bofm

因为包含没有给出预处理器错误,元组头很可能确实存在,这不是 messed-up/out-of-date C++ 标准库安装的情况。

然而,对于 C++11 之前的所有 C++ 标准,tuple 未在 std 中定义。

使用标准安装且没有附加标志,您的 Clang 版本应该使用 C++14,但是这似乎已被维护该系统的人或某些包维护者修改。

为确保您使用的是最新的 C++ 语言标准,请将 -std=c++17 添加到编译器调用中,或者至少 -std=c++14 如果 C++17 由于某种原因太新,例如与旧编译器安装的兼容性。特别是如果您正在为一所大学编写代码 class,您可能需要澄清可以接受的 C++ 标准。