Unfortunately, it looks like even the very limited functionality of aligned vs template (see, e.g., c++/17743) is broken and I cannot even attempt implementing tr1::type_traits::aligned_storage: the attribute seems completely ignored, otherwise I could at least provide specializations for Align = 1,2,4,8,16...
Needless to say, Icc seems ok :( Testcase (but, in case please test partial specializations too!): ////////////// struct A { typedef char type[4] __attribute__((aligned(4))); }; template<unsigned _Len> struct B { typedef char type[_Len] __attribute__((aligned(4))); }; template<bool> struct StaticAssert; template<> struct StaticAssert<true> {}; StaticAssert<__alignof__(A::type) == __alignof__(B<4>::type)> a1; StaticAssert<__alignof__(B<4>::type) == 4> a2; ///////////////// Giovanni can you please have a look?!? Thanks! -- Summary: __attribute__((aligned)) not working in template Product: gcc Version: 4.0.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c++ AssignedTo: giovannibajo at libero dot it ReportedBy: pcarlini at suse dot de CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19163