每个都以 std::function 作为第一个参数,
我无法调用可变参数模板来替换所有模板,我们将不胜感激。
#include <iostream>
#include <functional>
using namespace std;
template <typename ... FArgs, typename ... Args>
void run_callback(std::function<void(FArgs...)> && func, Args && ... as)
{
std::cout << "vardiac called\n" ;
}
void run_callback(std::function<void()>&& func) {
func();
}
void run_callback(std::function<void(int)>&& func, int data)
{
func(data);
}
void run_callback(std::function<void(int, int)>&& func, int data1, int data2) {
func(data1, data2);
}
void sum(int , int)
{
}
int main()
{
run_callback([](){std::cout << "none" << '\n';});
run_callback([](int j){std::cout << "none1: " << j << '\n';},12);
run_callback([](int j, int i){std::cout << "none2: " << j << ',' << i << '\n';},12,17);
run_callback(sum, 5,4);
}
template <typename F, typename ... Args>
void run_callback(F&& func, Args && ... as)
{
func(std::forward<Args>(as)...);
}