请问有人指出我,在下面的片段中制作set :: insert和set :: count的函子有什么区别?
typedef std::set<std::string> s_type;
typedef std::pair<s_type::iterator, bool>(s_type::*insert_fp)(const s_type::value_type&);
typedef s_type::size_type(s_type::*count_fp)(const s_type::value_type&);
std::vector<std::string> s_vector;
std::set<std::string> s_set;
std::for_each(s_vector.begin(), s_vector.end(), boost::bind(static_cast<insert_fp>(&s_type::insert), &s_set, _1));
std::for_each(s_vector.begin(), s_vector.end(), boost::bind(static_cast<count_fp>(&s_type::count), &s_set, _1));
给出:
error C2440: 'static_cast' : cannot convert from 'overloaded-function' to 'count_fp'
None of the functions with this name in scope match the target type
答案 0 :(得分:1)
我不知道你要做什么,但以下对我来说没有演员表:
int main()
{
std::vector<std::string> vector;
std::set<std::string> set;
std::for_each(vector.begin(), s_vector.end(),
boost::bind(&std::set<std::string>::insert, &set, _1));
std::for_each(vector.begin(), s_vector.end(),
boost::bind(&std::set<std::string>::count, set, _1));
return 0;
}