Допустимо ли псевдоним массива char через указатель на int?

Я знаю, что в стандарте явно разрешено следующее:

int n = 0;
char *ptr = (char *) &n;
cout << *ptr;

Как насчет этого?

alignas(int) char storage[sizeof(int)];
int *ptr = (int *) &storage[0];
*ptr = 0;
cout << *ptr;

По сути, я спрашиваю, допускают ли правила псевдонимов последовательность символов, доступную через указатель на другой тип. Я хотел бы, чтобы ссылки на части стандарта, которые указывают так или иначе, если это возможно.

Некоторые части стандарта оставили меня в противоречии; (3.10.10), кажется, указывает на то, что поведение будет неопределенным при условии, что динамический типstorage не являетсяint, Однако определение динамического типа мне неясно, и существованиеstd::aligned_storage приведет меня к мысли, что этоявляется возможный.

Ответы на вопрос(3)

Ваш ответ на вопрос