2011-12-26 44 views
1

我有象下面这样的代码:错误:STD之间的”重载歧义::复制

#include<set> 
#include<iterator> 

std::set<std::string> s1; 
std::set<std::string> s2; 
std::set<std::string> myresult; 

void some_func() { 
    std::set_difference(s1.begin(), s1.end(), s2.begin(), s2.end(),std::inserter(myresult,myresult.begin())); 
} 

这给了我编译错误:

/export/SunStudio/SUNWspro/prod/include/CC/Cstd/./algorithm.cc", line 2161: Error: Overloading ambiguity between "std::copy<__rwstd::__rb_tree<std::string, std::string, __rwstd::__ident<std::string, std::string>, std::less<std::string>, std::allocator<std::string>>::const_iterator, std::insert_iterator<std::set<std::string>>>(__rwstd::__rb_tree<std::string, std::string, __rwstd::__ident<std::string, std::string>, std::less<std::string>, std::allocator<std::string>>::const_iterator, __rwstd::__rb_tree<std::string, std::string, __rwstd::__ident<std::string, std::string>, std::less<std::string>, std::allocator<std::string>>::const_iterator, std::insert_iterator<std::set<std::string>>)" and "copy<__rwstd::__rb_tree<std::string, std::string, __rwstd::__ident<std::string, std::string>, std::less<std::string>, std::allocator<std::string>>::const_iterator, std::insert_iterator<std::set<std::string>>>(__rwstd::__rb_tree<std::string, std::string, __rwstd::__ident<std::string, std::string>, std::less<std::string>, std::allocator<std::string>>::const_iterator, __rwstd::__rb_tree<std::string, std::string, __rwstd::__ident<std::string, std::string>, std::less<std::string>, std::allocator<std::string>>::const_iterator, std::insert_iterator<std::set<std::string>>)".
+0

添加类型 – Vijay 2011-12-26 11:19:47

+1

这必须是特定于SunStudio的:我在Mac上用C++编译器编译了代码,并且它没有编译任何警告。 – dasblinkenlight 2011-12-26 11:24:50

+0

经典ADL/Koenig查找问题的这种气味。 – 2011-12-26 11:26:04

回答

0

你忘了添加

#include<algorithm> 

添加到您的代码