Не зная типа функции, я объявляю ее указатель с помощью нижеприведенной техники и инициализирую указатель функции.
template<typename T>
struct Declare { typedef T Type; }; // for declaring any func ptr
void fun () {}
int main ()
{
Declare<fun>::Type pf = &fun; // can't use C++0x 'auto'
}
Однако это дает ошибку компиляции как, error: ожидаемый тип, получил "удовольствие"
. Хотя тип любого метода известен во время компиляции. Недопустима ли передача функции в шаблон класса
, как указано выше?
[Примечание: замена fun
на void (*) ()
работает нормально. Но это не то, что нужно.]