小编Gro*_*lon的帖子

有没有一种方法可以专门使用模板化函数来区分参数的类型是指针还是指针的类型?

让我们考虑那些模板化函数

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)

不幸的是,如果我这样写,我得到的只是对非指针函数的调用。

有什么办法可以实现?

c++ templates pointers specialization

2
推荐指数
1
解决办法
40
查看次数

标签 统计

c++ ×1

pointers ×1

specialization ×1

templates ×1