错误的模板参数数量

时间:2017-04-11 02:08:13

标签: c++ c++11 mergesort

我想写模板Merge Sort。

    template <class RandomAccessIterator, class Comparator = std::less<>>
void MergeSort(RandomAccessIterator begin, RandomAccessIterator end, Comparator compare) {
    int s = end - begin;
    if (s > 1)
    {
        RandomAccessIterator middle = begin + s / 2 + 1;
        MergeSort(begin, middle, compare);
        MergeSort(middle, end, compare);
        std::inplace_merge(begin, middle, end, compare);
    }
}

我收到的消息是:错误:模板参数数量错误(0,应为1)  模板&gt;。

我试图将std :: less移动到函数声明,但也失败了。我需要做什么?

1 个答案:

答案 0 :(得分:3)

由于您将问题标记为C++11,因此您似乎无法使用钻石运营商。

正如您在documentation中看到的那样,表单std::less<>仅在C++14后才会被允许。

你可以在这里做的是使用另一种形式:

std::less<typename std::iterator_traits<RandomAccessIterator>::value_type>