view gcc/testsuite/g++.dg/cpp1y/var-templ39a.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
line wrap: on
line source

// PR c++/66260
// { dg-do compile { target c++14 } }

template <class>
bool foo = false;
template <>
bool foo<int> = true;
template <class T, int N>
bool foo<T[N]> = foo<T>;

#define assert(X) if (!(X)) __builtin_abort();

int main()
{
  // { dg-final { scan-assembler "_Z3fooIiE" } }
  assert(foo<int>);
  // { dg-final { scan-assembler "_Z3fooIdE" } }
  assert(!foo<double>);
  // { dg-final { scan-assembler "_Z3fooIA3_iE" } }
  assert(foo<int[3]>);
  // { dg-final { scan-assembler "_Z3fooIA3_dE" } }
  assert(!foo<double[3]>);
  // { dg-final { scan-assembler "_Z3fooIA2_A5_A3_iE" } }
  assert(foo<int[2][5][3]>);
  // { dg-final { scan-assembler "_Z3fooIA2_A5_A3_dE" } }
  assert(!foo<double[2][5][3]>);
}