Мы хотим проанализировать исходный файл следующим образом
Код: Выделить всё
template struct Array;
struct S
{
Array Grid;
};
с использованием функции clang_parseTranslationUnit2 и clang_visitChildren библиотеки clang. Переданный аргумент: { "-std=c++17", "-xc++", "-DHEADER_TOOL" . При такой настройке мы заметили, что Clang не может проанализировать Grid как поле. Вставив пробел между >> так, чтобы он стал Array Grid; clang сможет правильно проанализировать его как объявление поля. Похоже, что clang анализирует двойные угловые скобки, сдвигая их вправо. Что мы можем сделать, чтобы lib clang правильно разбирал вложенный шаблон, не добавляя вручную пробел в исходном коде?
Мы попытались добавить -std=c++17 в качестве аргумента в clang_parseTranslationUnit2. Объявление поля все еще не анализируется.
Подробнее здесь:
https://stackoverflow.com/questions/788 ... eclaration