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