I've executed the Boost.Move and Boost.Container tests with GCC 6.3 & MSVC 2017 => pass.
I've also verified the general "technique" (wrapping the struct with the alignment attribute in another struct) with several GCC, ICC and Clang versions, and it seems to work fine - i.e. no bugs where the compiler "loses" the alignment for the wrapper struct or the wrapper struct comes out with an unexpected size.
I've executed the Boost.Move and Boost.Container tests with GCC 6.3 & MSVC 2017 => pass.
I've also verified the general "technique" (wrapping the struct with the alignment attribute in another struct) with several GCC, ICC and Clang versions, and it seems to work fine - i.e. no bugs where the compiler "loses" the alignment for the wrapper struct or the wrapper struct comes out with an unexpected size.
So I guess this should be safe.