Шаблонные параметры по умолчанию в шаблонах функций - PullRequest
0 голосов
/ 19 января 2011

Я отвечал на этот вопрос.И я понял, что у меня оторвался рот, когда я не знал, о чем говорю.

Так что мой вопрос таков.Можно ли объединить эти функции в одну?(не беспокойтесь, что это точная копия уже существующей функции, я просто использую ее в качестве примера)

template <class iterType1, class iterType2, class boolPred>
bool equal(iterType1 begin, iterType1 end, iterType2 e, boolPred pred){

    while(begin != end){
        if(!pred(*begin, *e))
            return false;
        ++begin;
        ++e;
    }
    return true;
}

template <class iterType1, class iterType2>
bool equal(iterType1 begin, iterType1 end, iterType2 e){
    return equal(begin, end, e, std::equal_to<decltype(*begin)>());
}

Кроме того, повторно используется код из первого ввторое возможно даже без использования функций C ++ 0x (decltype).

1 Ответ

4 голосов
/ 19 января 2011

Возможно ли объединить эти функции в одну?

К сожалению, нет. У вас не может быть аргумента шаблона по умолчанию для параметра шаблона функции, и аргументы функции по умолчанию не могут использоваться для вывода аргументов шаблона.

Возможно ли повторное использование кода с первого по второй без использования функций C ++ 0x?

Да: вы можете использовать std::iterator_traits<T>::value_type.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...