c++17 map::extract 方法在 macOS 上可用吗?
Posted
技术标签:
【中文标题】c++17 map::extract 方法在 macOS 上可用吗?【英文标题】:Is the c++17 map::extract method available on macOS? 【发布时间】:2018-10-16 10:42:02 【问题描述】:参考这个答案:
https://***.com/a/44883472/9620309
即使使用最新的 XCode Beta (10.1),此功能似乎也无法在 macOS High Sierra 上使用?
我假设最新的 Apple-clang (10.0.0) 现在应该支持 C++17,但是当我使用 c++17 标志编译时,它说 std:: 中没有名为 extract 的成员地图...
还是我错过了什么?
编辑(mcve): http://coliru.stacked-crooked.com/a/78715cf9485374d8
// clang++ -std=c++17 -Wall -pedantic main.cpp
#include<map>
#include<string>
#include<algorithm>
int main()
std::map<int, std::string> m 10, "potato", 1, "banana" ;
auto nodeHandler = m.extract(10);
nodeHandler.key() = 2;
m.insert(std::move(nodeHandler)); // 1, "banana" , 2, "potato"
【问题讨论】:
好吧,你肯定错过了minimal reproducible example,没有它,从逻辑上讲不可能权威地断定你的假设是否正确,或者你犯了某种不明显的错字;至少在不了解 clang 的 C++17 支持的情况下是这样的。 @SamVarshavchik 添加了 ... 请发布代码,而不是链接。 呃,为什么 Apple 在 clang 上粘贴自己的版本号?没有上游版本 10 clang(最新的 clang 是 7)这样的东西,所以理解它到底对应什么是一团糟...... @molbdnilo 你去... 【参考方案1】:所以,为了回答我自己的问题,截至撰写本文之日,C++17 map::extract
方法在 macOS 上的默认 C++ 环境中不可用,即使是上面提到的最新测试版。
正如by Matteo above 指出的那样,它适用于非 Apple clang 7 和匹配的 libc++。
所以我目前的解决方法是使用自制软件中的 CMake 和 clang 7 来编译我需要的库,然后链接它。
【讨论】:
以上是关于c++17 map::extract 方法在 macOS 上可用吗?的主要内容,如果未能解决你的问题,请参考以下文章
LaTeX中如何定义使\section编译之后显示第一章,第二章这种