Проверка, является ли класс конструируемым с помощью libtooling

Я хотел бы использовать libtooling чтобы проверить, определен ли CXXRecordDecl является копируемым

Я уже попробовал:

  • hasCopyConstructorWithConstParam()
  • hasTrivialCopyConstructor() || hasNonTrivialCopyConstructor()

К сожалению, оба этих выражения возвращаются true если конструктор копирования класса неявно удален. Это может произойти, если класс наследуется от не копируемого класса или имеет переменную-член, которая не подлежит копированию.

Логика проверки того, является ли класс конструируемым при копировании, нетривиальна и должна существовать где-то в clang, Как я могу проверить, является ли класс конструируемым с помощью libtooling?

0

Решение

Превратите комментарий в ответ:

Вы можете получить конструктор с CXXRecordDecl::ctor_begin

и проверить CXXConstructorDecl::isDeleted(),

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]