让我们考虑那些模板化函数
template <typename T> void Func(T* p)
{
printf("pointer ");
Func(*p);
}
template <typename T> void Func(T)
{
printf("type");
}
Run Code Online (Sandbox Code Playgroud)
我想编写它们,以便如果我给它提供带有多个指针类型的参数,则将以该指针类型专用的函数递归地调用到不再有指针的位置,最后调用没有指针的函数。通常,如果我写
int a;
int* a2 = &a;
int** a3 = &a2;
int*** a4 = &a3;
Func(a4);
Run Code Online (Sandbox Code Playgroud)
我要输出写
pointer pointer pointer type
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果我这样写,我得到的只是对非指针函数的调用。
有什么办法可以实现?