私は次の機能を持っています:
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 型を明示的に指定せずにマージ関数を正しく定義するにはどうすればよいですか?