2010-02-25 5 views
0

아무도 나를 가리켜 주시겠습니까, 차이점은 set :: insert 및 set :: set의 펑터를 만드는 것 사이에 무엇입니까?boost :: bind 및 std :: 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 

답변

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; 
} 
관련 문제