How can shared_ptr disrupt alignment

You're right, std::shared_ptr doesn't affect alignment. It just takes in a pointer to an already allocated object, so if that allocation resulted in a misaligned object, the problem isn't with std::shared_ptr, it's with that allocation.

But std::shared_ptr is often used with std::make_shared. std::make_shared<T> performs a single allocation to reserve memory both for the std::shared_ptr control structure and the T instance. This allocation isn't done using any class-specific operator new (and shouldn't be). If the class-specific operator new sets up stricter alignment than what the default allocator does, then it's easy to see how this can fail when the default allocator gets used.