1 // { dg-do run  }
2 // Test that various calls to non-functions work.
3 
f()4 void 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()33 int 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