auto func(int (*(*pf)(int *)), int *p) -> int *(*)(int *)
{
cout << *(pf(p)) << endl;
return pf;
}//C++11 Standard
int *(*func2(int (*(*pf)(int *)), int *p))(int *)
{
cout << *(pf(p)) << endl;
return pf;
}//Before C++11 standard
这是一个函数,它接受一个int函数指针和一个int指针作为它的参数,并返回一个int函数指针。
如何为此功能创建指针?
答案 0 :(得分:1)
template<class T> using type=T;
template<class R, class...Args>
using sig=R(Args...);
typedef sig<int *(*)(int *) ,int (*(*)(int *)), int *>* pFun;
或
typedef
type<int *(*(int (*(*)(int *)), int *))(int *)>* pFun2;
递归申请,自由使用using
和/或typedef
。
在C ++ 03中,你可以使用ptr_to<X>::type
。
当然这很愚蠢,因为你真的想用有意义的类型名称解决问题,而不是使用模板tomfoolery或争论K&amp; R语法。