clang 7没有std :: map :: merge吗?

时间:2019-08-05 12:40:05

标签: clang llvm clang++

当我使用std :: map的merge(source)时出现错误:

error: no member named 'merge'

但是,自c ++ 17起,std::map::merge应该在那里。 我确实添加了set(CMAKE_CXX_STANDARD 17)-stdlib=libc++。 std :: map :: extract已经存在。这是clang-7中的错误吗?

如果我摆脱了-stdlib=libc++,则gcc标头中确实包含std :: map :: merge。然后我可以编译。但是我的项目确实需要-stdlib=libc++。有想法吗?

我四处挖掘,发现合并在llvm/include/c++/v1/mapllvm/include/c++/v1/experimental/map中都不存在。那么我应该为此包括哪个标头?还是clang-7对c ++ 17的支持仍然有问题?

1 个答案:

答案 0 :(得分:1)

它在LLVM 8中,但不在7中。它是the C++17 status table中的p0083r3,这是提交:

https://github.com/llvm/llvm-project/commit/5c4e07ae5c6f7f467b436f1b24f41ef4cf9897b3

从标签列表看,它似乎没有被反向移植到7。