C++11 lambda链式调用
#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; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |