Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;11指向模板化静态成员函数的指针向量_C++_C++11 - Fatal编程技术网

C++ C++;11指向模板化静态成员函数的指针向量

C++ C++;11指向模板化静态成员函数的指针向量,c++,c++11,C++,C++11,假设我有一门课是这样的: struct MyStruct { template<typename T> static int Func() { // Do something with the template parameter. } }; 然后,创建向量非常简单: std::vector<FuncPtr> FuncVector; std::vector FuncVector; 但是,我希望避免两次声明Func的原型

假设我有一门课是这样的:

struct MyStruct
{
    template<typename T>
    static int Func()
    {
        // Do something with the template parameter.
    }
};
然后,创建向量非常简单:

std::vector<FuncPtr> FuncVector;
std::vector FuncVector;

但是,我希望避免两次声明
Func
的原型。可以这样做吗?

您可以执行以下操作,而不是
FuncPtr
typedef

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

对于
FuncPtr
,您可以执行以下操作,而不是使用
typedef

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

使用
decltype

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

使用
decltype

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

既然你说原型不依赖于参数,那么干脆
std::vector
怎么样?当两个声明不一致时,有一个很好的理由避免两次声明
Func
的原型。既然你说原型不依赖于参数,简单地
std::vector
怎么样?当两个声明不一致时,有一个很好的理由可以避免两次声明
Func
的原型。