2015-08-16 4 views
1

Скажем, у меня есть класс, который звучит так:C++ 11 Функция Вектор указателей на шаблонного Статический член

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

Теперь сказать, что я хочу, чтобы создать вектор указателей на функции с Func «s прототип. Поскольку прототип не зависит от параметра шаблона, это должно быть возможно. И, конечно, я могу явно typedef указатель на Func, например, так:

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

И затем, создавая вектор так же легко, как:

std::vector<FuncPtr> FuncVector; 

Однако, я хотел бы избежать объявления Func прототип дважды. Можно ли это сделать?

+0

Так как вы говорите, прототип не зависит от параметра, как насчет просто 'станд: : vector )> '? – Quentin

+0

Есть веская причина, чтобы избежать объявления прототипа 'Func' дважды, когда два объявления не согласны. – Yakk

ответ

0

Вместо вашего typedef для FuncPtr, вы могли бы сделать:

using FuncPtr = decltype(&MyStruct::Func<int>); 
Смежные вопросы