Информация об изменениях

Сообщение Re[6]: Члены класса и aliasing от 05.05.2020 14:20

Изменено 05.05.2020 16:12 σ

Re[6]: Члены класса и aliasing
Ш>>>Ну и, конечно, надо вызывать вот так

Ш>>>

Ш>>>ca[53].sum( {(int *)&ca,DimOf(ca)} );

Ш>>>


σ>>UB даже при `sizeof(Count) == sizeof (int)`.


Ш>Это почему? Каст (int *)&ca полностью легален.


Ой-вей, `ca` ведь массив. Так что UB не из-за [expr.add]/4, а из-за [expr.add]/6.
Re[6]: Члены класса и aliasing
Ш>>>Ну и, конечно, надо вызывать вот так
Ш>>>
ca[53].sum( {(int *)&ca,DimOf(ca)} );

σ>>UB даже при `sizeof(Count) == sizeof (int)`.
Ш>Это почему? Каст (int *)&ca полностью легален.

Ой-вей, `ca` ведь ещё и массив. UB будет из-за [expr.add]/6.
Из-за [expr.add]/4 UB будет при использовании `&ca->val`.