diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/opt/ptrmem3.C')
-rw-r--r-- | gcc/testsuite/g++.dg/opt/ptrmem3.C | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/opt/ptrmem3.C b/gcc/testsuite/g++.dg/opt/ptrmem3.C new file mode 100644 index 00000000000..552a92c9c1a --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/ptrmem3.C @@ -0,0 +1,23 @@ +// { dg-options "-O1" } + +#include <stdio.h> +struct A { + A(int arg) : ia(arg) {} + int x,y,z,ia; + int mf(int arg) { return arg + ia; } +}; +int func(int A::*pdm, int (A::*pmf)(int)) // 2. regular function +{ + A oa(2); + return ((&oa)->*pdm) + (oa.*pmf)(2); +} +int main() +{ + int val; + + int A::*pda = &A::ia; + int (A::*pmfa)(int) = &A::mf; + val = func( pda, pmfa ); + if(val != 6) + printf("val=%d, expect 6 \n", val); +} |