首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用-std=gnu++11开关编译时相同的错误

用-std=gnu++11开关编译时相同的错误
EN

Stack Overflow用户
提问于 2018-05-03 11:17:06
回答 1查看 108关注 0票数 1

当我在没有-std=gnu++11开关的情况下编译时,这个循环工作得很好。如果使用-std=gnu++11进行编译,则会得到以下错误:

代码语言:javascript
复制
no match for call to '(__gnu_cxx::__normal_iterator<const float*, std::vector<float> >) (const float&, const float&)' if (!bool(__binary_pred(*__first1, *__first2))) 

我的代码:

代码语言:javascript
复制
for (auto it_A = std::begin(vector_A); it_A != std::end(vector_A); it_A += 4)
{
    bool found_in_B = false;
    for (auto it_B = std::begin(vector_B); !found_in_B && it_B != std::end(vector_B); it_B += 4)
    {
        found_in_B = std::equal(it_A, it_A + blockSize, it_B, it_B + blockSize);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-03 11:30:23

直到C++14,std::equal需要三个迭代器:两个描述第一个范围,一个描述第二个范围的开始。没有理由采取第四个迭代器,因为这两个范围必须是相同的长度(同样,直到C++14)。

四迭代器版本是在C++14中添加的,您所选择的语言变体是不可用的(该标志影响标准库,而不仅仅是语言)。

由于代码中的范围长度总是匹配的,所以只需删除第四个参数即可。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50153752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档