У меня есть следующий фрагмент кода:
template <typename T>
class Foo
{
template <typename U>
void bar() const;
};
[[template <typename T>]]
template <typename U>
void Foo<T>::bar() const
{
}
Вывод дерева AST для метода foo
дает следующее для определения метода (несущественные детали были удалены для ясности):
`-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. Любая помощь будет оценена.