OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.2.2/] [gcc/] [testsuite/] [g++.old-deja/] [g++.pt/] [unify6.C] - Diff between revs 149 and 154

Only display areas with differences | Details | Blame | View Log

Rev 149 Rev 154
// { dg-do assemble  }
// { dg-do assemble  }
// Copyright (C) 1999 Free Software Foundation, Inc.
// Copyright (C) 1999 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 21 May 1999 
// Contributed by Nathan Sidwell 21 May 1999 
// Template deduction and type unification should not issue diagnostics when
// Template deduction and type unification should not issue diagnostics when
// they're trying to see if it's possible.  Here deduction fails in some cases
// they're trying to see if it's possible.  Here deduction fails in some cases
// because you cant cv qualify a function type.
// because you cant cv qualify a function type.
template void fn(){} // A
template void fn(){} // A
template void fn(T const *){} // B
template void fn(T const *){} // B
// these next two specializations need to know if they're specializing A or B.
// these next two specializations need to know if they're specializing A or B.
// They specialize A, because they can't instantiate B.
// They specialize A, because they can't instantiate B.
template<> void fn() {} // ok, specialize A
template<> void fn() {} // ok, specialize A
template<> void fn() {} // ok, specialize A
template<> void fn() {} // ok, specialize A
// now make sure we moan when we really should
// now make sure we moan when we really should
template void foo(T const *){}
template void foo(T const *){}
void f()
void f()
{
{
  foo(); // { dg-error "" } attempt to build int & const *
  foo(); // { dg-error "" } attempt to build int & const *
  foo(); // { dg-error "" } attempt to build void (const *)()
  foo(); // { dg-error "" } attempt to build void (const *)()
}
}
typedef void (*Fptr)();
typedef void (*Fptr)();
template void PV(Fptr const &, T const * const &);
template void PV(Fptr const &, T const * const &);
template void PV(T1 const * const &, T2 const * const &);
template void PV(T1 const * const &, T2 const * const &);
void baz()
void baz()
{
{
  void *t;
  void *t;
  PV(&baz, t);
  PV(&baz, t);
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.