Я хотел бы использовать libtooling
чтобы проверить, определен ли CXXRecordDecl
является копируемым
Я уже попробовал:
hasCopyConstructorWithConstParam()
hasTrivialCopyConstructor() || hasNonTrivialCopyConstructor()
К сожалению, оба этих выражения возвращаются true
если конструктор копирования класса неявно удален. Это может произойти, если класс наследуется от не копируемого класса или имеет переменную-член, которая не подлежит копированию.
Логика проверки того, является ли класс конструируемым при копировании, нетривиальна и должна существовать где-то в clang
, Как я могу проверить, является ли класс конструируемым с помощью libtooling
?
Превратите комментарий в ответ:
Вы можете получить конструктор с CXXRecordDecl::ctor_begin
и проверить CXXConstructorDecl::isDeleted()
,
Других решений пока нет …