当前位置: 首页 > 知识库问答 >
问题:

将std::tuple添加到std::map编译并在Macos上工作,而不是在Linux上

邓声
2023-03-14

以下是代码(假设id和速度已经初始化,并且包含的内容正确):

std::地图

mymap。插入(标准::对

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

mymap。插入(标准:领带(id,速度))

这段代码在Macos(Xcode使用clang-800.0.42.1)下编译和工作,但在Linux(Ubuntu 16.04,gcc 5.4.0)下不编译和工作。对于后者,引发的错误是:

错误:调用'std::map'时没有匹配的函数

请注意,当尝试将std::元组插入std::映射时,问题类似(通过使用std::对而不是std::元组绕过)。

谁能解释一下?谢谢!


共有1个答案

傅越
2023-03-14

元组被添加到C形式C 11。

std::tuple

要使用C 11特性,您需要向gcc编译器添加-std=C 11标志。默认情况下,它尚未激活。

我认为mac可以编译,因为您使用的是Xcode,可能IDA已经设置了-std=c11标志。

 类似资料: