繁体   English   中英

为什么我不能在这里将 lambda 转换为 std::function ?

[英]why can't I convert a lambda to a std::function here?

我需要一个生成其他功能的 function。 为什么以下内容不允许我将lambda转换为std::function 我以前做过。

#include <iostream>
#include <functional>

std::function<int()> funcGen(int param) {
    std::function<int()> myGeneratedFunc = 
    [param](int input) -> int { 
        return input+param;
    };
    return myGeneratedFunc;
}

int main() {

    std::function<int()> myFunc = funcGen(3);
    std::cout << "this should be 4=3+1: " << myFunc(1) << "\n";

    return 0;
}

ideone我收到以下错误:

error: conversion from ‘funcGen(int)::<lambda(int)>’ to non-scalar type ‘std::function<int()>’ requested

std::function<int()>接受一个 function ,它不接受 arguments 并返回一个int 您提出的 lambda 接受一个int并返回一个int

考虑std::function<int(int)>代替:

#include <iostream>
#include <functional>

std::function<int(int)> funcGen(int param) {
    std::function<int(int)> myGeneratedFunc = 
    [param](int input) -> int { 
        return input+param;
    };
    return myGeneratedFunc;
}

int main() {

    std::function<int(int)> myFunc = funcGen(3);
    std::cout << "this should be 4=3+1: " << myFunc(1) << "\n";

    return 0;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM