这段代码来自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 7上g++-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)
这段代码有什么问题?谢谢你。
正如另一条评论已经指出的那样,我尝试x86-64 gcc (contracts)使用 gcc 编译器的实验版本来编译您的代码,并且编译成功。在这里尝试一下。
另外,我在Reddit上遇到了一篇有趣的帖子,其主题与我们在这里讨论的主题相同。
编辑
正如下面评论中发布的那样,gcc-10.0.0成功编译了问题中的代码。