c++ - 没有匹配函数调用 'std::advance'错误

标签 c++ c++11

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

相关文章:

c++ - 从(基对象的基引用)到(派生类引用)的静态转换

c++ - 如何强制执行 'override' 关键字?

c++ - 在单链表上实现选择排序

c# - 在 C# 中调用 C++ 库

iphone - 当我尝试使用 b2Body 的功能时游戏崩溃了——为什么?

c++ - 当值变得很小时,为什么这些计算需要多 20 倍的时间

c++ - cstdint typedef 是否可以绑定(bind)到某些实现特定类型 std::numeric_limits 不是专门用于?

c++ - 帮助 TGrid

C++ 输入验证打印两次?

c++ - 可变参数模板中元函数的最大大小