transform()需要多少个参数
How many arguments are required by transform()?
以下代码对transform()
的参数数量有错误。transform()
有两个版本,一个采用四个参数,另一个采用五个参数。为什么编译器试图使用第二个版本?顺便说一下,我正在使用VS2008
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
因为same
不是有效的UnaryOperator
,因为它是一个模板函数。你想要这样的东西:
&same< typename iterator_traits< Out >::value_type >
注意&
是可选的
或者你可以把same
变成一个多态函数对象:
struct same
{
template< typename T >
T operator ()( T const& t ) const { return t; }
};
并且使用CCD_ 7作为CCD_。
相关文章:
- 如何反转整数参数包
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何在不知道C++中有多少可选参数的情况下在循环中使用va_arg?
- 我能知道我的函数有多少参数吗?
- need else 参数只出现一次,无论在循环中输入多少字符串
- 我可以通过命令行参数传递给C++程序多少数据?
- 应该向C++Lambda传递多少个参数
- C/C++ main 函数中的参数列表大小是多少,行为不确定
- 作为参数立即传递的对象生存期是多少
- 临时绑定到引用参数的默认参数的生存期是多少
- 在mbstowcs_s函数SizeInWords参数的上下文中,Word的大小是多少
- 当GetQueuedCompleteionStatus()返回FALSE时,这些参数的值是多少
- 函数参数的寿命是多少(需要引用)?
- ios:setstate实际使用了多少个参数
- 与具有字符串输出参数的 WinAPI 函数的一致性是多少
- std::bind有多少个参数(VC11只支持4个)
- transform()需要多少个参数
- 在C++中,我可以通过引用传递多少个参数,而不会出现异常行为
- 可以向main()传递多少个参数
- 如何确定需要多少参数来实现fprint格式化字符串