当我使用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/map
和llvm/include/c++/v1/experimental/map
中都不存在。那么我应该为此包括哪个标头?还是clang-7对c ++ 17的支持仍然有问题?
答案 0 :(得分:1)
它在LLVM 8中,但不在7中。它是the C++17 status table中的p0083r3,这是提交:
https://github.com/llvm/llvm-project/commit/5c4e07ae5c6f7f467b436f1b24f41ef4cf9897b3
从标签列表看,它似乎没有被反向移植到7。