首页 > 解决方案 > C++17无匹配函数调用以减少错误

问题描述

此代码来自Apress的《 C++17 标准库快速参考》一书:

#include <numeric>
#include <vector>

using namespace std;
int main() {
  vector vec {4,2,5,1,3,6};
  int sum = reduce( begin(vec), end(vec));
}

当我在Windows 7g++-9.2上使用选项-std=c++17(或-std=gnu++2a)编译它时,我得到:

error: no matching function for call to 'reduce(std::vector<int, std::allocator<int> >::iterator, std::vector<int, std::allocator<int> >::iterator)'

这段代码有什么问题?谢谢你。

标签: c++c++17

解决方案


正如另一条评论已经指出的那样,我尝试使用x86-64 gcc (contracts)我想是 gcc 编译器的实验版本的版本编译您的代码,并且编译成功。在这里试试。

此外,我在Reddit上遇到了一篇有趣的帖子,主题与我们在这里讨论的主题相同。

编辑

正如 OP 在下面的评论中发布的那样,gcc-10.0.0成功地编译了问题中的代码。


推荐阅读