https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69065
Bug ID: 69065 Summary: [C++11] multiple alignas specifiers Product: gcc Version: 5.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: kukyakya at gmail dot com Target Milestone: --- http://en.cppreference.com/w/cpp/language/alignas (quoting it since I don't have the C++11 standard documents now) states that `alignas` can be used in the form of `alignas(pack...)`, but both g++ and clang++ fail to compile it. struct alignas(int, double) test { }; So I tried to use multiple `alignas` specifiers, but got unexpected results. #include <iostream> // struct alignas(int, double) test // { }; struct alignas(int) alignas(double) test1 { }; struct alignas(double) alignas(int) test2 { }; int main() { std::cout << "alignof(int) is " << alignof(int) << std::endl; std::cout << "alignof(double) is " << alignof(double) << std::endl; // std::cout << "alignof(test) is " << alignof(test) << std::endl; std::cout << "alignof(test1) is " << alignof(test1) << std::endl; std::cout << "alignof(test2) is " << alignof(test2) << std::endl; } alignof(int) is 4 alignof(double) is 8 alignof(test1) is 8 alignof(test2) is 4 With clang++ I got alignof(int) is 4 alignof(double) is 8 alignof(test1) is 8 alignof(test2) is 8 I'm not sure if it's okay to give multiple `alignas` specifiers, but I think it should have the strictest alignment if it's okay. G++ seems to apply only the latest `alignas` specifier.