我们切换到C ++ 17,因此Clang ++ 5.0获得了它的功能。但我们遇到/usr/include/c++/v1/unordered_map
调用/usr/include/c++/v1/__hash_table
文件的问题。似乎Clang在此文件中提出了先前的声明。
对于您的信息,使用GCC-5.4可以很好地编译。这是输出错误:
In file included from /usr/include/c++/v1/unordered_map:369:
/usr/include/c++/v1/__hash_table:1132:43: error: conflicting types for '__hash_table<_Tp, _Hash,
_Equal, _Alloc>'
__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table()
^
/usr/include/c++/v1/__hash_table:839:5: note: previous declaration is here
__hash_table()
^
/usr/include/c++/v1/__hash_table:1200:43: error: conflicting types for '__hash_table<_Tp, _Hash,
_Equal, _Alloc>'
__hash_table<_Tp, _Hash, _Equal, _Alloc>::__hash_table(__hash_table&& __u)
^
/usr/include/c++/v1/__hash_table:853:5: note: previous declaration is here
__hash_table(__hash_table&& __u)
^
在文件中,我们只是#include <unordered_map>
。
我已经尝试了libstdc ++和libc ++,但是在使用GCC no时,两者都给出了同样的错误。
有没有人遇到过这个问题?以及如何解决?
答案 0 :(得分:0)
我尝试用最小的例子重现错误,但我没有成功。
我仍然解决了这个错误。我认为这是与CMakeLists.txt
中的导入订单相关的问题:
include_directories(BEFORE "/usr/include/c++/5")
include_directories(AFTER "/usr/include/x86_64-linux-gnu/c++/5/")
然后没有更多的编译错误。