Я играл с LibTooling Clang и хочу использовать его для генерации явных специализаций шаблонов для любого шаблона, для которого у нас его нет. А именно, я хотел бы вставить в исходный код все неявно сгенерированные компилятором специализации шаблонов.
Я использовал сопоставители AST, чтобы найти все экземпляры шаблонов, и я могу получить тело для специализации. Но сложность состоит в том, чтобы найти правильную позицию для вставки специализации, потому что мы не можем просто поместить специализацию в случайную позицию или в конец файла. Фактически, это должно быть:
- Перед первым экземпляром с заданным набором параметров шаблона
- После того, как все типы шаблонов были просмотрены
- Если он находится в анонимном пространстве имен , он должен находиться в той же области анонимного пространства имен
- Et c ...
Итак, если в LibTooling Clang есть что-то, что я могу использовать для этого, позвольте мне знать. В конце концов, эта информация должна быть у компилятора.