我有以下功能:
template <typename Iterator>
void merge(Iterator begin, Iterator middle, Iterator end) {
std::vector<T> first(begin, middle), second(middle, end);
auto i1 = first.begin();
auto i2 = second.begin();
while (begin != end) {
if (i2 == second.end() || *i1 < *i2) {
*begin = *i1;
++i1;
} else {
*begin = *i2;
++i2;
}
++begin;
}
}
但是当我尝试使用它时:
int data[] = {1,2,3,4,5,6,7,8};
merge(data, data + 4, data + 8);
我收到一个错误:
candidate template ignored: couldn't infer template argument 'T'
如何在不明确指定 T 类型的情况下正确定义合并函数?