为什么clang混淆了Boost的STL?

zen*_*nna 2 c++ boost stl header clang

我正在尝试用Clang编译一个C++库(用g ++编译好).

但是由于某些原因,我在使用stl容器时到处都出现错误.错误消息似乎暗示它认为我正在尝试使用增强集,我认为不是.

我不相信任何地方我有点别名booststd,我从来没有实际使用的using关键字.

/Users/zennatavares/repos/cliques/cliques/../cliques/structures/disjointset.h:140:8: error: too few template arguments for class template 'set'
                std::set<int> visited_parents_;
                     ^
/usr/local/include/boost/detail/container_fwd.hpp:90:64: note: template is declared here
    template <class Key, class Compare, class Allocator> class set;
Run Code Online (Sandbox Code Playgroud)

bam*_*s53 6

我认为问题在于试图转发声明名称空间std的成员,而Boost正在为libc ++获取前向声明错误.没有任何可移植的方式来做这样的前向声明,所以提升真的不应该这样做.在命名空间std中声明内容会导致未定义的行为.

这是针对其中一个问题提出的针对提升的错误.https://svn.boost.org/trac/boost/ticket/5197

如果您发布了一个重现问题的完整程序,那么我们可以提供更多详细信息,说明您可以采取哪些措施来解决此问题.