Это не то. Вопрос касается динамически распределяемой памяти, а не стековой и не статической.
// требуется нечто в этом роде (псевдокод):
alignas(16) char* c_ptr = new alignas(16) char[100];
По определению, объектами в динамической памяти управляет не компилятор, а программист.
Следовательно, для достижения эффекта выравнивания в динамической памяти нужно написать свой аллокатор.
Компилятор тут не помощник.