簡體   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