// Build don't link: 
// GROUPS passed scoping
// local-class file
// From: dcb@us-es.sel.de
// Date:     Fri, 27 Nov 92 15:34:28 +0100
// Subject:  GNU G++ 2.3.1 bug report
// Message-ID: <9211271434.AA15612@us-es.sel.de>


void f()
{
        {
                struct A {
                        A() {};
                } a;
        };
        {
                struct A {
                        A() {};
                } a ;
        };
}
