의 벡터에 2 개 벡터를 복사 할 수 없습니다 :C++, 다음과 같은 데이터 유형이 쌍
struct Item { double a, b; Item (double a_, double b_): a(a_), b(b_){}};
typedef std::pair <double, Item> TPair;
typedef std::vector <TPair> TData;
을 나는 쌍 벡터에 2 개 벡터를 복사 할 :
int main(int argc, char* argv[])
{
std::vector <double> t1;
std::vector <Item> t2;
TData data;
//Error
std::transform (t1.begin(), t1.end(), data.begin(),
std::bind2nd(std::ptr_fun(std::make_pair <double,Item >), double()));
}
그러나 컴파일러 정지 다음 오류와 함께 :
Error 1 error C2784: 'std::pointer_to_binary_function<_Arg1,_Arg2,_Result,_Result(__fastcall *)(_Arg1,_Arg2)>
std::ptr_fun(_Result (__fastcall *)(_Arg1,_Arg2))' : could not deduce template argument for 'overloaded function type' from 'overloaded function type'
Error 2 error C2784: 'std::pointer_to_binary_function<_Arg1,_Arg2,_Result,_Result(__fastcall *)(_Arg1,_Arg2)>
std::ptr_fun(_Result (__fastcall *)(_Arg1,_Arg2))' : could not deduce template argument for 'overloaded function type' from 'overloaded function type'
어디에서 문제가 발생합니까? 당신의 도움을 주셔서 감사합니다. 컴파일러 MSVS 2010 x86. Boost가없는 솔루션을 선호합니다.
업데이트 질문 오류가 dasblinkenlight에 의해 발견 된, 수정 된 코드 : std::make_pair<double,Item>
의 두 번째 매개 변수가 Item
하지
어떤 컴파일러를 사용하고 있습니까? 최근 컴파일러 (즉, 람다 표현식)에서이를 수행하는 더 간단한 방법이 있습니다. –