PR c++/86728 - C variadic generic lambda.
[official-gcc.git] / gcc / testsuite / g++.dg / abi / pragma-pack1.C
blob9b76071c9d86ee46774c6f6d169fc1bb7a78a472
1 // PR c++/7046
3 extern "C" int printf (const char *, ...);
5 #pragma pack(4)
7 template <typename X >
8 struct T
10     char      x1;   /* Usually 3 padding bytes are added after x1 member. */
11     int       x2;
14 template <class T>
15 int f()
17   struct A { char i1; int i2; };
18   return sizeof (A);
21 #pragma pack(1)
22 template struct T<int>;   /* T<int> is instantiated here */
23 template int f<int>();
25 #pragma pack(4)
26 template struct T<float>; /* T<float> is required here */
27 template int f<double>();
29 int main()
31   printf("sizeof T<int>   = %d\n", sizeof(T<int>));
32   printf("sizeof T<float> = %d\n", sizeof(T<float>));
33   printf("f<int>()        = %d\n", f<int>());
34   printf("f<float>()      = %d\n", f<float>());
35   return (sizeof(T<int>) != sizeof(T<float>)
36           || f<int>() != f<float>());