1 // { dg-do run } 2 // Test that various calls to non-functions work. 3 f()4void f () { } 5 6 typedef void (*fptr)(); 7 typedef void (&fref)(); 8 fptr p = f; 9 fref r = f; 10 const fptr &pr = p; 11 12 struct A { 13 fptr p; 14 AA15 A (fptr n): p(n) { } fptrA16 operator fptr () { return p; } 17 }; 18 19 struct B { 20 fref r; 21 BB22 B (fptr n): r(*n) { } frefB23 operator const fref () { return r; } 24 }; 25 26 struct C { 27 const fptr pr; 28 CC29 C (fptr n): pr(n) { } 30 operator const fptr& () { return pr; } 31 }; 32 main()33int main () 34 { 35 f(); 36 37 p(); 38 r(); 39 pr(); 40 41 A a (f); 42 a(); 43 a.p(); 44 45 B b (f); 46 b(); 47 b.r(); 48 49 C c (f); 50 c(); 51 c.pr(); 52 } 53