// test that assumed contracts do instatiate templates
// { dg-do compile }
// { dg-options "-std=c++2a -fcontracts" }
template<typename T>
int f(T t)
{
  return -t;
}
int dummy()
{
  [[ assert assume: f(1.0) > 0 ]];
  return -1;
}
template<>
int f(double t) // { dg-error "specialization of.*after instantiation" }
{
  return -1.0;
}
int main()
{
  dummy();
  f(1);
  f(1.0);
  return 0;
}