2
我想用Clang编译一个C++库(用g ++编译得很好)。为什么clang会让STL混淆Boost?
但是,由于某种原因,我在使用stl容器时出现错误。错误消息似乎表明它认为我正在尝试使用增强设置,我不认为我是。
我不相信任何地方我以某种方式别名boost
为std
,我从来没有真正使用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;
这就是为什么我们不使用using语句将整个名称空间带入我们的代码。删除using语句并改为使用全名“std :: set”。 – 2012-04-08 21:32:44
@MooingDuck:嗯,什么'使用'语句?他在他的代码中明确地将其定义为“std :: set”(或者至少是铿锵声重复的那一行)。 – 2012-04-08 21:38:08
这就是说,一个[简短,自包含,正确(可编译),例子](http://sscce.org/)将不胜感激。你可能有一个'使用'声明在你不知道的地方。 – 2012-04-08 21:39:13