1
다음 코드는 transform()
에 대한 인수의 개수에 대해 오류가 있습니다. transform()
의 두 가지 버전이 있는데 하나는 네 개의 인수를 사용하고 다른 하나는 다섯 개를 인수합니다. 왜 컴파일러는 두 번째 버전을 사용하려고합니까? same
는 템플릿 기능이 있기 때문에, 유효한 UnaryOperator
아니기 때문에 그건 그렇고, 내가 VS2008transform()은 몇 개의 인수가 필요합니까?
template<class T> T same(const T& t){ return t; }
template<class In, class Out>
Out my_copy(In first, In last, Out res){
return transform(first, last, res, same);
}
void test(){
int a[]={1,2,3,4,5,6};
vector<int> v(a,a+sizeof(a)/sizeof(int));
vector<int> v2(v.size());
my_copy(v.begin(), v.end(), v2.begin());
}
// error C2780: '::std::_Enable_if<!std::_Is_checked_iterator<_OutIt>::_Result||!std::_Is_checked_iterator<_OutIt>::_Result,_OutIt>::_Result std::transform(_InIt1,_InIt1,_InIt2,_OutIt,_Fn2)' : expects 5 arguments - 4 provided
왜'std :: copy'를 사용하지 않으시겠습니까? –
Stroustrup의 책에서 본 한 예입니다. 시도하고 싶습니다. – ubbdd
예제가 잘못되어,'same'은 유효한 것이 아닙니다. –