如何返回带参数的lambda函数?

用户名

我有一个函数模板,它接受一个可调用对象,包括如下所示的lambda

template<class ValueT, class ValidatorF>
void myFun(ValueT& value, ValidatorF validate)
{
    ...
    if (validate(value)) ... // call to validate the value
    ...
}

我可以像下面这样使用它和验证器来测试整数是否大于0

int i = 10;
myFun(i, [](int& value) {return value > 0;});

现在,我希望验证者测试整数是否大于特定数字(不只是0),我可以

auto greaterThan = [](int number) 
                   { return [number](int& value) { return value > number; }; };

但是以上内容无法使用VS2013进行编译。有任何错误或方法可以使其正常工作吗?

我刚刚在Coliru中测试。没关系。也许是由于VS2013。通过测试

int main()
{
    auto greaterThan = [](int number) 
                       { return [number](int& value) { return value > number; }; };
}

VS2013编译错误是

Error 1 error C2440: 'return' : cannot convert from 'main::<lambda_20b9557a9ed9208edabcd15f35d83ad2>::()::<lambda_44761a42f06f1791bdbf89e7a9b3a961>' to 'bool (__cdecl *)(int &)' main.cpp 8

丹尼尔·M

除了ecatmur所说的之外,您还可以决定实现GreaterThan方法的未固化版本并使用std :: bind绑定第二个参数:

auto greaterThan = [](int num1, int num2) -> { return num1 > num2; };
myFun(i, std::bind(greaterThan, _1, number) );

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

返回带参数的函数

来自分类Dev

带参数的函数返回函数

来自分类Dev

带可选返回值的lambda参数

来自分类Dev

如何键入带注释的“函数包装器”(返回与参数具有相同签名的函数的函数)

来自分类Dev

带参数的自由函数,获取返回类型

来自分类Dev

如何在 Pandas 中分组,在所有组上使用带参数的函数并返回参数

来自分类Dev

如何返回lambda函数?

来自分类Dev

如何定义带参数或不带参数的函数?

来自分类Dev

haskell带2个参数的函数返回带1个参数的函数?

来自分类Dev

haskell带2个参数的函数返回带1个参数的函数?

来自分类Dev

如何使用带参数的回调函数?

来自分类Dev

如何在带参数的函数中声明

来自分类Dev

如何正确调用带日期参数的函数?

来自分类Dev

如何调用带参数的构造函数?

来自分类Dev

带函数参数的函数

来自分类Dev

返回lambda捕获函数参数参考

来自分类Dev

如何从Lambda函数返回nullptr?

来自分类Dev

Expression.Lambda 生成带返回值的函数

来自分类Dev

科特林| 查找使用lambda返回lambda的函数的参数

来自分类Dev

返回参数类型受通用类型参数约束的lambda函数

来自分类Dev

带“-”的Javascript函数参数

来自分类Dev

带参数的Void *函数

来自分类Dev

带参数的Bash函数

来自分类Dev

带参数的onclick函数

来自分类Dev

如何使用Lambda指定构造函数参数?

来自分类Dev

如何用参数编写lambda函数?C ++

来自分类Dev

C ++ Lambda-如何捕获函数参数

来自分类Dev

如何获取构造函数lambda的返回类型

来自分类Dev

是否可以将不带参数并返回void的函数指针类型与带参数并返回值的函数一起使用?

Related 相关文章

热门标签

归档