| // { dg-do run } |
| |
| // Copyright (C) 2003 Free Software Foundation, Inc. |
| // Contributed by Nathan Sidwell 6 Sep 2003 <nathan@codesourcery.com> |
| // Origin: Volker Reichelt <reichelt@igpm.rwth-aachen.de> |
| |
| // PR c++/11788 we failed to instantiate a decl, and we lost some side |
| // effects |
| |
| static int flag = 0; |
| |
| template <typename> struct A |
| { |
| A &active () { flag++; static A a; return a; } |
| |
| static void foo() {} |
| |
| static void bar () {} |
| static void bar (int) {} |
| |
| int m; |
| }; |
| |
| void (*baz ()) () |
| { |
| A<int> a; |
| return &a.active ().foo; |
| } |
| |
| void (*boz ()) () |
| { |
| A<int> a; |
| return &a.active ().bar; |
| } |
| |
| int *buz () |
| { |
| A<int> a; |
| |
| return &a.active ().m; |
| } |
| |
| int main () |
| { |
| baz (); |
| boz (); |
| buz (); |
| |
| return flag != 3; |
| } |