我有以下代码,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);无效。
如评论中所述,您可以使用next。 :)

关于c++ - 没有匹配函数调用 'std::advance'错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27882311/

10-11 16:05