diff options
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.other/call1.C')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.other/call1.C | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.other/call1.C b/gcc/testsuite/g++.old-deja/g++.other/call1.C new file mode 100644 index 000000000..e12cffedf --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/call1.C @@ -0,0 +1,52 @@ +// { dg-do run } +// Test that various calls to non-functions work. + +void f () { } + +typedef void (*fptr)(); +typedef void (&fref)(); +fptr p = f; +fref r = f; +const fptr &pr = p; + +struct A { + fptr p; + + A (fptr n): p(n) { } + operator fptr () { return p; } +}; + +struct B { + fref r; + + B (fptr n): r(*n) { } + operator const fref () { return r; } +}; + +struct C { + const fptr pr; + + C (fptr n): pr(n) { } + operator const fptr& () { return pr; } +}; + +int main () +{ + f(); + + p(); + r(); + pr(); + + A a (f); + a(); + a.p(); + + B b (f); + b(); + b.r(); + + C c (f); + c(); + c.pr(); +} |