Доступен ли метод map :: extract для c ++ 17 в macOS? - PullRequest
0 голосов
/ 16 октября 2018

Ссылаясь на этот ответ:

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

Даже с последней бета-версией XCode (10.1) эта функция, по-видимому, недоступна в macOS High Sierra?

Я бы предположил, что последний Apple-clang (10.0.0) должен сейчас поддерживать C ++ 17, но когда я компилирую с флагом c ++ 17, он говорит, что вstd :: map ...

Или я что-то упустил?

Редактировать (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" } }
}

1 Ответ

0 голосов
/ 19 октября 2018

Итак, чтобы ответить на мой собственный вопрос, на момент написания этой статьи методы C ++ 17 map::extract НЕ доступны в среде C ++ по умолчанию на macOS, даже с самой последней бета-версией, упомянутой выше.

Как указал Маттео выше , он доступен с не-Apple clang 7 и соответствующим libc ++.

Так что мой текущий обходной путь - использовать CMake и clang 7 из homebrew для компиляциичто мне нужно в качестве библиотеки, а затем ссылку на нее.

...