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
6struct undef;
7
8template <typename U, int N = sizeof(U)> struct A { A(int); };
9template <typename U> void f(A<U>);
10
11template <typename U> struct B { B(int) { } };
12template <typename U> void f(B<U>) { }
13
14int main()
15{
16  f<undef>(0);
17}
18