У меня есть простой анализатор заголовков на основе clang, и я получаю typedefs из некоторого источника.
struct _poire {
int g;
tomate rouge;
};
typedef struct _poire kudamono;
После синтаксического анализа у меня есть clang::TypedefDecl, тогда я получаю clang::QualType typedef с clang::TypedefDecl::getUnderlyingType()
С помощью QualType, если я использую метод getAsString, я могу найти "struct _poire" std::string. Все это хорошо.
Проблема в том, что если я попытаюсь увидеть, является ли этот тип каноническим типом, с QualType::isCanonical() он возвращает false.
Итак, я пытаюсь получить канонический тип с QualType::getCanonicalType().getAsString() и возвращает ту же строку "struct _poire".
согласно ссылке clang по типу http://clang.llvm.org/docs/InternalsManual.html#canonical-types, я думал, что isCanonical() должен вернуться true, когда не задействован typedef.
Так что же такое канонический тип?