У меня есть простой анализатор заголовков на основе 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.
Так что же такое канонический тип?