No matching function for call to 'std::advance' 错误
No matching function for call to 'std::advance' error
我有以下代码,Xcode
说它无法识别 std::advance
的签名:
template<typename Container> const typename Container::value_type&
getNthElement(const Container& container, size_t n) {
auto nElem = advance(container.begin(), n);
return *nElem;
}
编译器不支持C++14
所以我不能使用cbegin(container)
。为什么这个解决方案是错误的?
std::advance
没有 return 任何东西(见这里:http://www.cplusplus.com/reference/iterator/advance/,它的 return 类型是 void
)所以 auto nElem = advance(container.begin(), n);
不是'有效。
如评论中所述,您可以使用 next。 :)
我有以下代码,Xcode
说它无法识别 std::advance
的签名:
template<typename Container> const typename Container::value_type&
getNthElement(const Container& container, size_t n) {
auto nElem = advance(container.begin(), n);
return *nElem;
}
编译器不支持C++14
所以我不能使用cbegin(container)
。为什么这个解决方案是错误的?
std::advance
没有 return 任何东西(见这里:http://www.cplusplus.com/reference/iterator/advance/,它的 return 类型是 void
)所以 auto nElem = advance(container.begin(), n);
不是'有效。
如评论中所述,您可以使用 next。 :)