C++11 lambda链式调用

C++11 lambda链式调用,第1张

概述本文章向大家介绍C++11 lambda链式调用,主要包括C++11 lambda链式调用使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

#include "pch.h"

#include

#include

#include

using namespace std;

template

class Task;

template

class Task

{

public:

Task(function&&f):m_fn(move(f)) {}

Task(function&f):m_fn(f) {}

R Run(Args&&...args)

{

return m_fn(forward(args)...); //完美转发

}

// 连续调用新的函数,将函数不断地串联起来

template

auto Then(F&& f)->Task::type(Args...)>

{

// result_of 获取F的返回类型

using return_type = typename result_of::type;

auto func = move(m_fn);

return Task([func,&f](Args&&... args) {

//将前一个函数的输出作为后一个函数的输入

return f(func(forward(args)...));

});

}

private:

functionm_fn;

};

int main()

{

Task task([](int i) {return i; });

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链式调用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1264382.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-08
下一篇2022-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存