没有用于调用'std::advance'错误的匹配函数

No matching function for call to 'std::advance' error

本文关键字:函数 错误 std 用于 调用 advance      更新时间:2023-10-16

我有以下代码,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

返回任何内容(请参阅此处:http://www.cplusplus.com/reference/iterator/advance/,其返回类型为void),因此auto nElem = advance(container.begin(), n);无效。如评论中所述,您可以使用下一步。:)