定义模板参数的迭代器类型



在下面的函数中,如何告诉编译器迭代器是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);
}
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);
}

最新更新