1// { dg-do run } 2// Test that various calls to non-functions work. 3 4void f () { } 5 6typedef void (*fptr)(); 7typedef void (&fref)(); 8fptr p = f; 9fref r = f; 10const fptr &pr = p; 11 12struct A { 13 fptr p; 14 15 A (fptr n): p(n) { } 16 operator fptr () { return p; } 17}; 18 19struct B { 20 fref r; 21 22 B (fptr n): r(*n) { } 23 operator const fref () { return r; } 24}; 25 26struct C { 27 const fptr pr; 28 29 C (fptr n): pr(n) { } 30 operator const fptr& () { return pr; } 31}; 32 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