gpt4 book ai didi

c++ - 将 std::tuple 添加到 std::map 编译并在 Macos 上运行,而不是在 Linux 上运行

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:18:51 24 4
gpt4 key购买 nike

下面是代码(假设 idspeed 已经初始化,并且包含正确):

std::map<int, std::tuple<double, double>> mymap;

mymap.insert(std::pair<int, std::tuple<double, double>>(id, speed));

此代码在 Macos(使用 clang-800.0.42.1 的 Xcode)Linux(Ubuntu 16.04、gcc 5.4.0)下编译和工作。

mymap.insert(std::tie(id, speed));

此代码可在 Macos(使用 clang-800.0.42.1 的 Xcode)下编译和运行,但不能在 Linux(Ubuntu 16.04、gcc 5.4.0)下运行。对于后者,引发的错误是:

error: no matching function for call to 'std::map<int, std::tuple<double, double> >::insert(std::tuple<int&, std::tuple<double, double>&>)

请注意,在尝试将 std::tuple 插入 std::map 时问题类似(使用 std::pair 而不是 std::tuple 绕过)。

谁能解释一下?谢谢!

最佳答案

元组从 C++11 添加到 C++。

std::tuple

要使用 C++11 功能,您需要将 -std=c++11 标志添加到您的默认情况下 gcc 编译器尚未激活。

我认为 mac 可以编译,因为您正在使用 Xcode,并且可能已经从 IDA 设置了 -std=c++11 标志。

关于c++ - 将 std::tuple 添加到 std::map 编译并在 Macos 上运行,而不是在 Linux 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46643594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com