我想以不同的方式处理模板参数,以便代码:
template <class T> class A {
public:
A() {}
};
void faa(A<int>& param);
我想知道param是一个模板专业化并可以访问它的参数。
所以我用函数
写了一个ASTVisitor
bool VisitFunctionDecl(FunctionDecl *f) {
std::cout<< "VisitFunctionDecl" <<std::endl;
const DependentTemplateSpecializationType* t1;
const TemplateSpecializationType* t2;
for(ParmVarDecl* p :f->params())
{
t1=p->getType()->getAs<DependentTemplateSpecializationType>();
t2=p->getType()->getAs<TemplateSpecializationType>();
if(t1!=nullptr||t2!=nullptr)
{
std::cout<< "template param found" <<std::endl;
}
}
return true;
}
但是这些演员阵容总是nullptr
- 我永远不会得到template param found
输出。
我做错了什么?有没有其他方法可以将t转换为允许检查模板参数的类型之王?