指向模板化静态成员函数的指针向量

C++11 Vector of Pointers to Templated Static Member Function

本文关键字:函数 指针 向量 静态成员      更新时间:2023-10-16

假设我有一个这样的类:

struct MyStruct
{
    template<typename T>
    static int Func()
    {
        // Do something with the template parameter.
    }
};

现在假设我想创建一个指向具有Func原型的函数的指针向量。因为原型不依赖于模板参数,所以这应该是可能的。当然,我可以显式地将typedef指向Func,如下所示:

typedef int (* FuncPtr)(MyStruct * pointer);

然后,创建向量非常简单,如下所示:

std::vector<FuncPtr> FuncVector;

但是,我想避免两次声明Func的原型。这可能吗?

使用decltype:

std::vector<decltype(&MyStruct::Func<void>)> FuncVector;

代替FuncPtrtypedef,您可以这样做:

using FuncPtr = decltype(&MyStruct::Func<int>);