![](/img/trans.png)
[英]Why can't I use a std::tuple in a constexpr lambda 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.