Как я могу вставить специализации шаблонов с помощью LLVM / Clang? - PullRequest
1 голос
/ 07 августа 2020

Я играл с LibTooling Clang и хочу использовать его для генерации явных специализаций шаблонов для любого шаблона, для которого у нас его нет. А именно, я хотел бы вставить в исходный код все неявно сгенерированные компилятором специализации шаблонов.

Я использовал сопоставители AST, чтобы найти все экземпляры шаблонов, и я могу получить тело для специализации. Но сложность состоит в том, чтобы найти правильную позицию для вставки специализации, потому что мы не можем просто поместить специализацию в случайную позицию или в конец файла. Фактически, это должно быть:

  • Перед первым экземпляром с заданным набором параметров шаблона
  • После того, как все типы шаблонов были просмотрены
  • Если он находится в анонимном пространстве имен , он должен находиться в той же области анонимного пространства имен
  • Et c ...

Итак, если в LibTooling Clang есть что-то, что я могу использовать для этого, позвольте мне знать. В конце концов, эта информация должна быть у компилятора.

...