我希望有一个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)