| /* { dg-do compile } */ | |
| bool foo0(int) { return true; } | |
| bool foo1(); | |
| struct A | |
| { | |
| A(); | |
| ~A(); | |
| template<typename T> void bar1(T f) | |
| { | |
| if (f(0)) | |
| foo1(); | |
| } | |
| template<typename T> void bar2(T); | |
| }; | |
| template<typename T> void A::bar2(T f) | |
| { | |
| A a, b[1], *p; | |
| while (foo1()) | |
| { | |
| if (p) | |
| ++p; | |
| if (p && foo1()) | |
| bar1(f); | |
| if (p) | |
| ++p; | |
| } | |
| if (foo1()) | |
| bar1(f); | |
| } | |
| void baz() | |
| { | |
| A().bar2(foo0); | |
| } |