О clang AST и odr-использовании деструкторовC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 О clang AST и odr-использовании деструкторов

Сообщение Anonymous »


Для следующего кода

struct X { интервал а; }; интервал основной() { Х х; вернуть 0; } CLang AST не отображает DestructorDecl:

CXXRecordDecl 0x55a415f54f00 line:1:8 ссылается на определение структуры X |-DefinitionData pass_in_registers агрегирует стандартный_макет тривиально_копируемый тривиальный литерал модуля | |-DefaultConstructor существует тривиально | |-CopyConstructor простой тривиальный has_const_param implicit_has_const_param | |-MoveConstructor существует простой и тривиальный | |-CopyAssignment простой тривиальный has_const_param нужен_имплицит неявный_has_const_param | |-MoveAssignment существует простые тривиальные потребности_имплицит | `-Деструктор простой нерелевантный тривиальный нужен_имплицит |-CXXRecordDecl 0x55a415f55018 col:8 неявная структура X |-FieldDecl 0x55a415f550c0 столбец:7 a 'int' |-CXXConstructorDecl 0x55a415f55320 col:8 неявно используется X 'void () noException' встроенный по умолчанию тривиальный | `-CompoundStmt 0x55a415f557d8 |-CXXConstructorDecl 0x55a415f55458 col:8 неявный constexpr X 'void (const X &)' встроенный по умолчанию тривиальный noException-unevaluated 0x55a415f55458 | `-ParmVarDecl 0x55a415f55568 col:8 'const X &' `-CXXConstructorDecl 0x55a415f55618 col:8 неявный constexpr X 'void (X &&)' встроенный по умолчанию тривиальный noException-unevaluated 0x55a415f55618 `-ParmVarDecl 0x55a415f55728 col:8 'X &&' Я пытался получить CXXRecordDecl из struct X и обнаружил, что decl->getDestructor() возвращает nullptr >.

Это меня немного смущает, поскольку стандарт гласит, что класс без деструктора, объявленного пользователем, будет иметь деструктор, объявленный неявно, и он будет неявно определен при использовании odr. > Так что же такое деструктор, используемый odr? Используется ли деструктор этого X odr? Или это просто мое непонимание clang AST и поведения clang::CXXRecordDecl::getDestructor?

Обратите внимание, что clang-AST, напротив, показывает, что конструктор по умолчанию X определен, хотя он ничего не делает.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Получение источника AST Clang's AST
    Anonymous » » в форуме C++
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Изучение того, как использовать Clang Ast Matchters для внедрения правил или кодовых кодов Clang-Tidy
    Anonymous » » в форуме C++
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • MacOS Clang Compiler выпуск (Apple Clang версия 17.0.0 (Clang-1700.0.13.5))))
    Anonymous » » в форуме C++
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Является ли Clang-tidy '-Cecks = clang-analyzer-*' падение замены для сканирования и проверки Clang-Analyze?
    Anonymous » » в форуме C++
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Clang AST Writer добавляет новую строку после выражения
    Anonymous » » в форуме C++
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»