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