C++17 没有匹配的调用函数来减少错误

Rom*_*rio 5 c++ c++17

这段代码来自Apress 的C++17 Standard Library Quick Reference一书:

#include <numeric>
#include <vector>

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

当我在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)'
Run Code Online (Sandbox Code Playgroud)

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

Nut*_*ker 3

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

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

编辑

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