summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/ext/attrib36.C
blob: 5434cb9eff0be556f6ff228f4f1d06573c87e357 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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);
}