Most CPU's have "preferences" about where data can be stored. When reading or writing to a memory address, the operation may be slower (or completely illegal) if the address doesn't match the data size you try to write. For example, it is common to require that 4-byte integers be allocated starting on an address that is divisible by 4.
That is, an int stored on address 7 is either less efficient, or completely illegal, depending on your CPU. But if it is stored at address 8, the CPU is happy.
That is what alignment expresses: for any object of type T what must its address be divisible by, in order to satisfy the CPU's requirements?"
In C++, the alignment for an object is left implementation-defined (because, as said above, it depends on the CPU architecture). C++ merely says that every object has an alignment, and describes how to determine the alignment of compound objects.
Being "aligned for a long double" simply means that the object must be allocated so that its first byte is placed in an address that is valid for a long double. If the CPU architecture specifies the alignment of a long double to be 10 (for example), then it means that every object with this alignment must be allocated on an address that is divisible by 10.