According to 12.2 ; 5, in the following code:
int count;
class C
{
public:
int i;
C() : i(1) { ++count;}
C(const C &c) : i(c.i) { ++count;}
~C() { --count;}
};
int
f ()
{
static const C &c = C();
return c.i;
}
int
main ()
{
int i = f ();
return count < i;
}
the temporary to which the reference c is bound in f should persist till
the program exits. However, although it is only initialized once (as it
ought to), it is destroyed each time the function f returns.
--
Summary: temporary to which static storage duration reference is
bound destroyed too early
Product: gcc
Version: 4.2.0
Status: UNCONFIRMED
Keywords: wrong-code
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: amylaar at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29360