Subject: [boost] [move] [container] workaround for incorrect [-Wignored-attributes]
From: Groke, Paul (paul.groke_at_[hidden])
Date: 2017-09-20 15:25:24
we've stumbled over a supposed bug in GCC 6 that generates incorrect [-Wignored-attributes] warnings.
Using anything in Boost that relies on boost::move_detail::aligned_storage (like boost::container::small_vector), with a small enough type, will trigger this warning when compiling for certain architectures with at least GCC 6.2~6.4. Affected architectures are e.g. SPARC and ARM - not affected are x86 and ARM64.
GCC bug ticket: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82270
It would be possible to work around this issue by changing the implementation of boost::move_detail::aligned_storage_impl so that the aligned type no longer carries the attribute(aligned) itself, but just contains a member which carries that attribute. If I understand this correctly this should have the same effect (barring compiler bugs).
Question: Would a pull request for such a change be welcome?