代码如下:
template <class InputIterator, class OutputIterator>
inline OutputIterator copy(InputIterator first, InputIterator last,
OutputIterator result)
{
return __copy_dispatch<InputIterator,OutputIterator>()(first, last, result);
}
//A overload version
inline char* copy(const char* first, const char* last, char* result) {
memmove(result, first, last - first);
return result + (last - first);
}
如果我调用copy(int*, int*)
,这是最佳匹配,编译器将实例化一个新函数int*
用作模板参数,还是int*
将转换为char*
.
如果我调用copy(char[], char[])
通知,我只是char[]
用来记录参数的类型。