(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.dg/
warn/
Wsizeof-array-div1.C
// PR c++/91741
// { dg-do compile { target c++11 } }
// { dg-options "-Wall" }

int
fn1 ()
{
  int arr[10];
  return sizeof (arr) / sizeof (decltype(arr[0]));
}

template<typename T, int N>
int fn2 (T (&arr)[N])
{
  return sizeof (arr) / sizeof (T);
}

template<typename T, int N>
int fn3 (T (&arr)[N])
{
  return sizeof (arr) / sizeof (bool); // { dg-warning "expression does not compute" }
}

template<typename U, int N, typename T>
int fn4 (T (&arr)[N])
{
  return sizeof (arr) / sizeof (U); // { dg-warning "expression does not compute" }
}

void
fn ()
{
  int arr[10];
  fn2 (arr);
  fn3 (arr);
  fn4<short> (arr);
}