繁体   English   中英

macOS上是否可以使用c ++ 17 map :: extract方法?

[英]Is the c++17 map::extract method available on macOS?

引用此答案:

https://stackoverflow.com/a/44883472/9620309

即使使用最新的XCode Beta(10.1),macOS High Sierra上似乎也不提供此功能?

我以为最新的Apple-clang(10.0.0)现在应该支持C ++ 17,但是当我使用c ++ 17标志进行编译时,它表示std :: map中没有名为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" } }
}

因此,为回答我自己的问题,截至撰写本文时,C ++ 17 map::extract方法在macOS的默认C ++环境中不可用,即使具有上述最新的beta版本也是如此。

正如上面的Matteo所指出的,它可用于非Apple clang 7和匹配的libc ++。

因此,我目前的解决方法是使用自制软件中的CMake和clang 7编译我需要的库,然后针对它进行链接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM