summaryrefslogtreecommitdiffstats
path: root/gcc/testsuite/g++.dg/template/sfinae28.C
blob: 1bd9c2cd3f1da1e06f14d2b504fd3c5d57e67a1d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// Origin: PR c++/44267

struct B {};
struct D : B {};
struct VD : virtual B {};

template <class T> T create();

typedef char one[1];
typedef char two[2];

template <class D, class B>
one& f(char (*)[sizeof(static_cast<D>(create<B>()))]);

template <class D, class B>
two& f(...);

int main()
{
   f<D*, int>(0);
   f<D*, B*>(0);
   f<VD*, B*>(0);
   return 0;
}
OpenPOWER on IntegriCloud