diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/ext/attrib36.C')
-rw-r--r-- | gcc/testsuite/g++.dg/ext/attrib36.C | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/ext/attrib36.C b/gcc/testsuite/g++.dg/ext/attrib36.C new file mode 100644 index 000000000..5434cb9ef --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attrib36.C @@ -0,0 +1,20 @@ +// PR c++/43031 +// { dg-do compile { target { { i?86-*-* x86_64-*-* } && ilp32 } } } + +class T; +class L { }; +class P : public L +{ + typedef void (__attribute__((__stdcall__)) T::*F) (L*); + void f(bool aAdd); +}; +class T +{ +public: + virtual void __attribute__((__stdcall__)) A(L *listener) = 0; + virtual void __attribute__((__stdcall__)) R(L *listener) = 0; +}; +void P::f(bool aAdd) +{ + F addRemoveEventListener = (aAdd ? &T::A : &T::R); +} |