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