
#include "pch.h"
#include
#include
#include
using namespace std;
template
class Task;
template
class Task
{
public:
Task(function
Task(function
R Run(Args&&...args)
{
return m_fn(forward(args)...); //完美转发
}
// 连续调用新的函数,将函数不断地串联起来
template
auto Then(F&& f)->Task
{
// result_of 获取F的返回类型
using return_type = typename result_of
auto func = move(m_fn);
return Task
//将前一个函数的输出作为后一个函数的输入
return f(func(forward(args)...));
});
}
private:
function
};
int main()
{
Task
auto result = task.Then([](int i) {return i + 1; }).Then([](int i) {return i + 2; }).Then([](int i) {return i + 3; }).Run(1);
cout << result << endl;
}
总结以上是内存溢出为你收集整理的C++11 lambda链式调用全部内容,希望文章能够帮你解决C++11 lambda链式调用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)