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