c++ - 无法编译 C++ 17 结构化绑定(bind)

标签 c++ c++17 clion

下面的代码

#include <iostream>
#include <tuple>

int main()
{
    auto [i, c, d] = std::make_tuple(1, 'a', 2.3);
    std::cout << "i=" << i << " c=" << c << " d=" << d << '\n';
    return 0;
}

没有在我的电脑上编译。我收到这些错误消息:

error: use of undeclared identifier 'i'
error: expected unqualified-id

还有一些相同类型的。

我正在使用:Mac OS X 10.11.6 El Capitan、CLion。我在创建项目时确实选择了 C++ 17 选项,并且我的 CMakeList.txt 有这一行:set(CMAKE_CXX_STANDARD 17)

clang --version - Apple LLVM 版本 8.0.0 (clang-800.0.42.1)

我需要做什么来编译这段代码?

最佳答案

正如@Eljay 在评论中所说,旧版本的 clang 没有完整的 C++17 支持。

我已经在没有 CLion 的情况下重现了这个问题。

在 10.11.6 机器上,使用“Apple LLVM 版本 8.0.0 (clang-800.0.42.1)”

clang++ -std=c++1z junk.cpp

给出了 OP 报告的错误。 (请注意,-std=c++17 在这里不是一个有效的选项 - 后来才出现)

在 10.14.2 机器上,使用“Apple LLVM 版本 10.0.0 (clang-1000.10.44.4)”

clang++ -std=c++17 junk.cpp

编译无错误。

关于c++ - 无法编译 C++ 17 结构化绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54028803/

相关文章:

c++ - 链表显示乱码

c++ - 将移位的无符号数字用作数组的索引号是一个好习惯

CMake - 包含第三方文件

c++ - 如何检查 C++ 中的位?

c++ - 友元的替代品?

c++ - _fu2___ZSt4cout 在我的 C++ 代码中占用了 21.49% 的运行时间

c++ - 依赖于 C++ 的编译器优化

c++ - 尝试包含我的源文件的 CMake 问题

c++ - 使用多个处理器加速程序

c++ - 排序算法 - 方法