// PR c++/7046 extern "C" int printf (const char *, ...); #pragma pack(4) template struct T { char x1; /* Usually 3 padding bytes are added after x1 member. */ int x2; }; template int f() { struct A { char i1; int i2; }; return sizeof (A); } #pragma pack(1) template struct T; /* T is instantiated here */ template int f(); #pragma pack(4) template struct T; /* T is required here */ template int f(); int main() { printf("sizeof T = %d\n", sizeof(T)); printf("sizeof T = %d\n", sizeof(T)); printf("f() = %d\n", f()); printf("f() = %d\n", f()); return (sizeof(T) != sizeof(T) || f() != f()); }