如何在C ++中构造一个没有typedef的复杂函数指针?

时间:2014-12-04 12:45:32

标签: c++ pointers

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函数指针。

如何为此功能创建指针?

1 个答案:

答案 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语法。