如何通过传递给模板函数的参数调用函数? 我试图在我得到它之后向向量添加函数,所以我可以调用该向量中的所有函数,有点像回调
#include <Windows.h>
#include <iostream>
#include <functional>
template <typename... T>
void RunFunction(std::function<void> f, T... args)
{
f(args);
}
void testFunction(int x, int y)
{
std::cout << (x + y);
return;
}
int main()
{
RunFunction(testFunction, 1, 3);
}
答案 0 :(得分:3)
你可能想要:
template <typename F, typename... Ts>
void RunFunction(F f, Ts&&... args)
{
f(std::forward<Ts>(args)...);
}
void testFunction(int x, int y)
{
std::cout << (x + y);
}
int main()
{
RunFunction(testFunction, 1, 3);
}
作为
std::function<void>
不是你想要的,而是std::function<void(Ts...)>
f(args);
应为f(args...)
。
然后Sig
的{{1}}无法推断std::function<Sig>
。