// http://bugzilla.redhat.com/411871 // { dg-do compile } extern "C" int printf (const char *, ...); struct E { template E (const volatile T&); template E (T&); char x[64]; }; template struct D { static E foo (E, ...); static int foo (T, int); }; template struct C { static T ca; static const int value = sizeof (D::foo (ca, 0)) == sizeof (int); }; struct A { int a; }; namespace { struct B { int a; }; } int bar (void) { C a; C b; return a.value + b.value; }