std::function 具有模板化参数类型
std::function with templated Argument Types
struct Functor
{
public:
template <typename... argtypes>
Functor(std::function<void()> Function)
{
this->Function = Function;
}
~Functor() {}
void operator()() const
{
OutputDebugStringA("Hello there, General Kenobi");
Function();
}
private:
std::function<void()> Function;
};
void gtk()
{
OutputDebugStringA("What is happening to meeee");
}
Functor Draw = Functor(>k);
void foo() { Draw(); }
如何让 Functor 的 std::function
接受参数类型?
我尝试了以下方法:
Functor(std::function<void(argtypes...)> Function)
Functor Draw = Functor<void>(>k);
但是编译器抱怨 'typename not allowed'。
您需要使 Functor 本身成为一个模板,而不仅仅是它的构造函数。参数是调用约定的一部分,因此在比 ctor 更广泛的范围内需要。 std::function 成员还需要参数类型,您在实际调用存储的可调用对象时也需要它们。
struct Functor
{
public:
template <typename... argtypes>
Functor(std::function<void()> Function)
{
this->Function = Function;
}
~Functor() {}
void operator()() const
{
OutputDebugStringA("Hello there, General Kenobi");
Function();
}
private:
std::function<void()> Function;
};
void gtk()
{
OutputDebugStringA("What is happening to meeee");
}
Functor Draw = Functor(>k);
void foo() { Draw(); }
如何让 Functor 的 std::function
接受参数类型?
我尝试了以下方法:
Functor(std::function<void(argtypes...)> Function)
Functor Draw = Functor<void>(>k);
但是编译器抱怨 'typename not allowed'。
您需要使 Functor 本身成为一个模板,而不仅仅是它的构造函数。参数是调用约定的一部分,因此在比 ctor 更广泛的范围内需要。 std::function 成员还需要参数类型,您在实际调用存储的可调用对象时也需要它们。