Код: Выделить всё
int x2[2][10];
auto p2 = std::launder(reinterpret_cast(&x2[0][0]));
// Undefined behavior: x2[1] would be reachable through the resulting pointer to x2[0]
// but is not reachable from the source
Я прочитал это как «массив ints размером 10 дюймов. Но тогда комментарий UB для меня не имеет смысла. x2[0] и p2 имеют размер 10. Пока вы не пытаетесь выполнять арифметические действия выше 10-го элемента (например, p2+10), вам не следует в стране UB, верно?
Ближе всего к ответу я нашел номер 71631428, но он не полностью отвечает на мои вопросы.
Изменить:
Что означает int(*)[10]?
Наконец-то я нашел ответ, и это базовые знания: «Указатель на массив целых чисел размером 10».
Остается другой вопрос о UB. Поэтому я отредактирую заголовок соответствующим образом.
Подробнее здесь: https://stackoverflow.com/questions/790 ... onal-array
Мобильная версия