Size: a a a

2021 March 15

SS

Sergey Sobolev in pro.cxx
Constantine Drozdov
Возможно, Бьорн писал это еще до того, как поняли, что так не надо
Да вроде после первого стандарта)
источник

SS

Sergey Sobolev in pro.cxx
Скорее всего, так можно, но лучше не надо)
источник

SS

Sergey Sobolev in pro.cxx
Это выглядит как стыковка с Си
источник

CD

Constantine Drozdov in pro.cxx
Sergey Sobolev
Это выглядит как стыковка с Си
В си так можно, но С++ использует здесь другую модель
источник

SS

Sergey Sobolev in pro.cxx
Constantine Drozdov
В си так можно, но С++ использует здесь другую модель
Ну вот в сокетах юзается sockaddr и sockaddr_in каст, нормально же работает? Как раз по причине layout_compatible
источник

CD

Constantine Drozdov in pro.cxx
Sergey Sobolev
Ну вот в сокетах юзается sockaddr и sockaddr_in каст, нормально же работает? Как раз по причине layout_compatible
Если это как надо работает, это гарантии конкретного компилятора, а не языка
источник

АР

Андрей Руссков... in pro.cxx
Sergey Sobolev
Ну вот в сокетах юзается sockaddr и sockaddr_in каст, нормально же работает? Как раз по причине layout_compatible
а не по причине того что sockaddr это первый член sockaddr_in?
источник

SS

Sergey Sobolev in pro.cxx
Андрей Руссков
а не по причине того что sockaddr это первый член sockaddr_in?
A pointer to a standard-layout class may be converted (with reinterpret_cast) to a pointer to its first non-static data member and vice versa.
Да, думаю, это так, я не прав
источник
2021 March 16

SS

Sergey Sobolev in pro.cxx
Но пока что с кастом двух одинаковых структур непонятно. Очень сомневаюсь, что страуструп не прав)
источник

AT

Alexander Tulikov in pro.cxx
Sergey Sobolev
Но пока что с кастом двух одинаковых структур непонятно. Очень сомневаюсь, что страуструп не прав)
Насколько я понимаю, это было возможно до DR 2051 http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#2051
Сейчас это нарушение strict aliasing и UB как следствие.
источник

CD

Constantine Drozdov in pro.cxx
Alexander Tulikov
Насколько я понимаю, это было возможно до DR 2051 http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#2051
Сейчас это нарушение strict aliasing и UB как следствие.
Насколько я понимаю, этот DR никогда не будет принят
источник

CD

Constantine Drozdov in pro.cxx
Его введение требует немедленного добавления restrict и связанных механик из языка С
источник

AT

Alexander Tulikov in pro.cxx
Constantine Drozdov
Насколько я понимаю, этот DR никогда не будет принят
Написано, что принят.
источник

AT

Alexander Tulikov in pro.cxx
источник

CD

Constantine Drozdov in pro.cxx
Alexander Tulikov
Написано, что принят.
А, наверное, понятие similar разное со стандартом С. Кастовать две одинаковые по составу структуры с разными именами нельзя.
источник

AT

Alexander Tulikov in pro.cxx
Constantine Drozdov
А, наверное, понятие similar разное со стандартом С. Кастовать две одинаковые по составу структуры с разными именами нельзя.
Да, similar подразумевает, что конечный тип совпадает.
источник

CD

Constantine Drozdov in pro.cxx
В общем, этот пример просто должен UB-ать по структуре C++
struct A { int x; };
struct B { int x; };
int foo(A* a) {
   return reinterpret_cast<B*>(a)->x;
}
int main() {
   A a{0};
   return foo(&a);
}
иначе restrict нужен
источник

S

Stas in pro.cxx
Alexander Tulikov
Насколько я понимаю, это было возможно до DR 2051 http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#2051
Сейчас это нарушение strict aliasing и UB как следствие.
an aggregate or union type that includes one of the aforementioned
types among its elements or non-static data members (including,
recursively, an element or non-static data member of a subaggregate or contained union)
Это правило позволяло?
Здесь под "aforementioned" имеется в виду поля другой структуры?
Иначе я не вижу, что до 20-го стандарта позволяло это делать
источник

PY

Popov Yuri in pro.cxx
Sergey Skvortsov
В структуре struct { double a; double b; } a и b не будут pointer interconvertible
Куча софта работаем с комплесными числами у меня и коллег где эта совместимость поинтер вовсю используется и проблем нет
источник

НЛ

Ника Левицкая... in pro.cxx
Из-за чего файл может просто не создаться? Если всё для него указал, разве что не знаю, не накосячила ли в cmake
источник