Merged with mainline at revision 128810.
[official-gcc.git] / gcc / testsuite / g++.dg / ext / tmplattr3.C
blobf8d3c162072f238d67bf327969bc977469465354
1 // PR c++/17743
3 template<typename T>
4 struct X {
5   typedef char layout_type[sizeof(T)]
6   __attribute ((aligned(__alignof(double))));
7   layout_type data;
8 };
10 template<typename T>
11 struct Y {
12   typedef char layout_type[sizeof(T)]
13   __attribute ((aligned(__alignof(T))));
14   layout_type data;
17 template<typename T>
18 struct Z {
19   typedef char layout_type[sizeof(T)]
20   __attribute ((aligned(__alignof(T))));
21   struct Z2 {
22     layout_type data;
23   } in;
26 template<typename T>
27 struct A;
29 template <typename T>
30 struct A<T*> {
31   typedef char layout_type[sizeof(T)]
32   __attribute ((aligned(__alignof(T))));
33   layout_type data;
36 template<bool> struct StaticAssert;
37 template<> struct StaticAssert<true> {};
39 StaticAssert<__alignof(X<double>) == __alignof(double)> d1;
40 StaticAssert<__alignof(Y<double>) == __alignof(double)> d2;
41 StaticAssert<__alignof(Z<double>) == __alignof(double)> d3;
42 StaticAssert<__alignof(A<double*>) == __alignof(double)> d4;