title: Does new char actually guarantee aligned memory for a class type?
body: <p>Is allocating a buffer via <code>new char[sizeof(T)]</code> guaranteed to allocate memory which is properly aligned for the type <code>T</code>, where all members of <code>T</code> has their natural, implementation defined, alignment (that is, you have not used the <code>alignas</code> keyword to modify their alignment).</p>
  
  <p>I have seen this guarantee made in a few answers around here but I'm not entirely clear how the standard arrives at this guarantee.  5.3.4-10 of the standard gives the basic requirement: essentially <code>new char[]</code> must be aligned to <code>max_align_t</code>.</p>
  
  <p>What I'm missing is the bit which says <code>alignof(T)</code> will always be a valid alignment with a maximum value of <code>max_align_t</code>. I mean, it seems obvious, but must the resulting alignment of a structure be at most <code>max_align_t</code>? Even point 3.11-3 says extended alignments may be supported, so may the compiler decide on its own a class is an over-aligned type?</p>