KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have a struct like this: struct A { void i(int i) {} void s(string const &s) {} }; Now when I try this: bind1st(mem_fun(&A::i), &a)(0); bind1st(mem_fun(&A::s), &a)(""); The first line compiles OK, but the second generates an error: c:\program files (x86)\microsoft visual studio 10.0\vc\include\xfunctional(299): error C2535: 'void std::binder1st<_Fn2>::operator ()(const std::basic_string<_Elem,_Traits,_Ax> &) const' : member function already defined or declared with [ _Fn2=std::mem_fun1_t<void,A,const std::string &>, _Elem=char, _Traits=std::char_traits<char>, _Ax=std::allocator<char> ] c:\program files (x86)\microsoft visual studio 10.0\vc\include\xfunctional(293) : see declaration of 'std::binder1st<_Fn2>::operator ()' with [ _Fn2=std::mem_fun1_t<void,A,const std::string &> ] c:\work\sources\exception\test\exception\main.cpp(33) : see reference to class template instantiation 'std::binder1st<_Fn2>' being compiled with [ _Fn2=std::mem_fun1_t<void,A,const std::string &> ] What could be the problem? How could I fix it? Edit: It seems that any reference argument is a problem. So if I change the i method to void i(int &i) {} I get a similar error.
Tags (comma-separated)
Save Edits
Cancel