1// Origin: PR c++/44267
2
3struct B {};
4struct D : B {};
5struct VD : virtual B {};
6
7template <class T> T create();
8
9typedef char one[1];
10typedef char two[2];
11
12template <class D, class B>
13one& f(char (*)[sizeof(static_cast<D>(create<B>()))]);
14
15template <class D, class B>
16two& f(...);
17
18int main()
19{
20   f<D*, int>(0);
21   f<D*, B*>(0);
22   f<VD*, B*>(0);
23   return 0;
24}
25