Определить тип итератора аргумента шаблона - PullRequest
0 голосов
/ 31 января 2020

В функции ниже, как сообщить компилятору, что Iterator является итератором Cont?

template<typename Cont, typename Pred>
Iterator<Cont> find_if(const Cont &c, Pred p)
{
    return std::find_if(std::begin(c), std::end(c), p);
}

1 Ответ

1 голос
/ 31 января 2020
template<typename Cont, typename Pred>
auto find_if(const Cont &c, Pred p)
-> decltype(std::begin(c)) // HERE
{
    return std::find_if(std::begin(c), std::end(c), p);
}

Или начиная с версии C ++ 14:

template<typename Cont, typename Pred>
auto find_if(const Cont &c, Pred p) //All you need is auto
{
    return std::find_if(std::begin(c), std::end(c), p);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...