lambda 编译错误

A lambda compilation error

本文关键字:错误 编译 lambda      更新时间:2023-10-16

我在代码中编写了以下lambda表达式:

auto fnd_rpt_chrs = [&] (string::iterator& iter_arg) {
for(auto iter = iter_arg + 1; iter !=  s2.end(); ++iter){
if(*iter == *iter_arg)
return true;
}
return false;
};

在其他地方,我通过以下方式调用 lambda:

void some_function(string const& s2){
auto iter = s2.begin();
fnd_rpt_chrs(iter);
}

对于上述情况,我收到以下编译错误:

没有从"std::__1::__wrap_iter"到 'string::itrator &' (又名 '__wrap_iter &'( 表示第一个参数

有人可以指出我在这里错过了什么吗?

蒂亚

维诺德

iteratorconst_iterator 之间不匹配(此外,迭代器可以按值传递(,您可以将 lambda 更改为:

auto fnd_rpt_chrs = [&] (string::const_iterator iter_arg) {
    for (auto iter = iter_arg + 1; iter != s2.end(); ++iter){
        if(*iter == *iter_arg)
            return true;
    }
    return false;
};