模板类的模板方法的lang AST

问题描述 投票:1回答:1

我有以下代码:

template <typename T>
class Foo
{
  template <typename U>
  void bar() const;
};

[[template <typename T>]]
template <typename U>
void Foo<T>::bar() const
{
}

转储方法foo的AST树为方法定义提供了以下内容(为清楚起见,删除了无关的详细信息:]

`-FunctionTemplateDecl <line:10:1, line:14:1> col:11:14 bar
 |-TemplateTypeParmDecl <line:10:11, col:20> col:20 typename depth 1 index 0 U
 `-CXXMethodDecl <line:9:1, line:14:1> line:11:14 bar 'void () const'
  `-CompoundStmt <line:12:1, line:14:1>

我不知道如何找到template <typename T>部分(在[[...]]块中的部分)的位置。我在clang AST API中找不到任何相关内容。任何帮助将不胜感激。

c++ clang llvm-clang
1个回答
0
投票

最后,我找到了自己问题的解决方案,因此发布了答案。希望它可能对其他人有所帮助。

可以使用getNumTemplateParameterLists()类的getTemplateParameterList()DeclaratorDecl方法获取外部模板参数的位置信息。有关详细信息,请参见documentation

© www.soinside.com 2019 - 2024. All rights reserved.