小编Mrb*_*b83的帖子

如何使用相同的模板语法创建一个function_list <>类来保存std :: function <> s的向量?

我希望有一个function_list <>模板类,其中包含std :: function <>值的向量。关键是我想用声明单个std :: function <>的相同形式声明列表。例如

function_list<void()> functions; // list of std::functions that take and return void
Run Code Online (Sandbox Code Playgroud)

下面是我尝试实现的方法。我尝试遵循标准库的函数头文件中std :: function <>模板所使用的相同语法。

#include <functional>
#include <vector>
#include <iostream>

template<class _R, class... _Args>
class function_list<_R(_Args...)>
{
public:
  std::vector<std::function<_R(_Args...)>> functions;
  function_list& operator+=(std::function<_R(_Args...)> f) { functions.push_back(f); return *this; }
  void call_all(_Args... args) { for (auto& f : functions) { f(args...); } }
};

int main()
{
  function_list<void()> fl;
  fl += []() { std::cout << "Hello, World!" << std::endl; };
  fl …
Run Code Online (Sandbox Code Playgroud)

c++ templates delegates c++11 std-function

1
推荐指数
1
解决办法
43
查看次数

标签 统计

c++ ×1

c++11 ×1

delegates ×1

std-function ×1

templates ×1