view gcc/testsuite/g++.dg/template/sizeof13.C @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 04ced10e8804
children
line wrap: on
line source

// PR c++/42623
// We should choose f(B) because f(A<undef>) involves applying sizeof to
// an incomplete class, so it is removed by SFINAE.
// { dg-do link }

struct undef;

template <typename U, int N = sizeof(U)> struct A { A(int); };
template <typename U> void f(A<U>);

template <typename U> struct B { B(int) { } };
template <typename U> void f(B<U>) { }

int main()
{
  f<undef>(0);
}