Size: a a a

2021 March 15

ПК

Побитый Кирпич... in pro.cxx
Alexandr Rudalev
С какого перепуга вообще рассматриваются  A{}.d и B{}.d  - это поля а не структуры (типы). В данном случае нам гарантируется, что если мы приведём A к B, то их поля d будут храниться в одном и том же месте.
Потому что свойство pointer-interconvertible относится к объектам (полям), а не к типам
источник

AD

Andrey Davydov in pro.cxx
Alexandr Rudalev
И компилятор верно сделал оптимизацию
Компилятор с -fno-strict-aliasing и без выдал разные результаты для test1() — 8 и 9.
источник

AR

Alexandr Rudalev in pro.cxx
Побитый Кирпич
Потому что свойство pointer-interconvertible относится к объектам (полям), а не к типам
Two objects a and b are pointer-interconvertible if... какие поля?
источник

ПК

Побитый Кирпич... in pro.cxx
Alexandr Rudalev
Two objects a and b are pointer-interconvertible if... какие поля?
> Two objects a and b

Слово objects о чем нибудь говорит?
источник

ПК

Побитый Кирпич... in pro.cxx
objects != types
источник

AR

Alexandr Rudalev in pro.cxx
объект имеет конкретный тип. А то что A и B pointer-interconvertible по первому полю выше показано.
источник

AR

Alexandr Rudalev in pro.cxx
А то что компилятор сделал оптимизацию предполагая что in и out не пересекается, вполне очевидно.
источник

ПК

Побитый Кирпич... in pro.cxx
Alexandr Rudalev
объект имеет конкретный тип. А то что A и B pointer-interconvertible по первому полю выше показано.
Объекты A a и a.d are pointer-interconvertible потому что второй объект является первым полем первого.

Объекты a.d и b.d не pointer-interconvertible потому что нет там правила для двух разных полей (если есть - процитируй).

=> Объекты A a и B b не pointer-interconvertible, потому что транзитивность не выполняется.
источник

AR

Alexandr Rudalev in pro.cxx
источник

SS

Sergey Skvortsov in pro.cxx
Вы понимаете, что такое объект?
источник

ПК

Побитый Кирпич... in pro.cxx
Это ты привел транзитивность которая не выполняется
источник

AR

Alexandr Rudalev in pro.cxx
С какого перепуга? Объекты типов A и double  pointer-interconvertible?
источник

SS

Sergey Skvortsov in pro.cxx
Alexandr Rudalev
С какого перепуга? Объекты типов A и double  pointer-interconvertible?
Для произвольных объектов типов A и double нельзя сказать, являются ли они pointer-interconvertible
источник

ПК

Побитый Кирпич... in pro.cxx
Alexandr Rudalev
С какого перепуга? Объекты типов A и double  pointer-interconvertible?
Не объекты типов A и double, а объекты A a и a.d. Конкретные два объекта
источник

AR

Alexandr Rudalev in pro.cxx
Почему?
источник

SS

Sergey Skvortsov in pro.cxx
n+1 раз за сегодня: это свойство конкретных объектов, а не их типов
источник

ПК

Побитый Кирпич... in pro.cxx
Alexandr Rudalev
Почему?
по этому правилу https://eel.is/c++draft/basic.compound#4.3
источник

AR

Alexandr Rudalev in pro.cxx
А как тогда все используют ioctl? С кучей недоопределённых структур?
источник

ПК

Побитый Кирпич... in pro.cxx
Alexandr Rudalev
А как тогда все используют ioctl? С кучей недоопределённых структур?
А что там?
источник

AR

Alexandr Rudalev in pro.cxx
Sergey Skvortsov
n+1 раз за сегодня: это свойство конкретных объектов, а не их типов
Ну и? Эти объеты не имеют типов? И весь разговор не о приведении типов? Или не о расположении полей описанных в типах?
источник