CLang LibTooling处理函数模板参数

时间:2015-08-06 16:58:21

标签: c++ clang llvm-clang libtooling

我想以不同的方式处理模板参数,以便代码:

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转换为允许检查模板参数的类型之王?

0 个答案:

没有答案