1
以下代码对于transform()
的参数数量有误。 transform()
有两个版本,一个需要四个参数,另一个需要五个。为什么编译器试图使用第二个版本?顺便说一句,我使用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'不是一个有效的东西。 –