テンプレート引数を異なる方法で処理したいので、コードの場合:
template <class T> class A {
public:
A() {}
};
void faa(A<int>& param);
param がテンプレートの特殊化であり、そのパラメーターにアクセスできることを知りたいです。
だから私はASTVisitor
with 関数を書いた
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 をキャストする他の方法はありますか?