1 // PR c++/42623 2 // We should choose f(B) because f(A<undef>) involves applying sizeof to 3 // an incomplete class, so it is removed by SFINAE. 4 // { dg-do link } 5 6 struct undef; 7 8 template <typename U, int N = sizeof(U)> struct A { A(int); }; 9 template <typename U> void f(A<U>); 10 BB11template <typename U> struct B { B(int) { } }; f(B<U>)12template <typename U> void f(B<U>) { } 13 main()14int main() 15 { 16 f<undef>(0); 17 } 18