// { dg-do assemble  }
// 
// Copyright (C) 2000 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 18 Jan 2001 <nathan@codesourcery.com>

// Bug 1617. We didn't resolve partial ordering properly. The std is rather
// vague about it anyway, DR 214 talks about this.

extern "C" int puts (char const *);

template <typename T> int Foo (T);    // { dg-message "candidate" } 
template <typename T> int Foo (T &);  // { dg-message "note" } candidate

template <typename T> int Qux (T);    // { dg-message "candidate" } 
template <typename T> int Qux (T const &);  // { dg-message "note" } candidate

template <typename T> int Bar (T const *const &); // { dg-message "candidate" } 
template <typename T> int Bar (T *const &);       // { dg-message "note" } candidate
template <typename T> int Bar (T *);              // { dg-message "note" } candidate

template <typename T> int Baz (T *const &);       // { dg-message "candidate" } 
template <typename T> int Baz (T *);              // { dg-message "note" } candidate

int Baz (int const *ptr, int *ptr2)
{
  Baz (ptr2);   // { dg-error "ambiguous" } 
  Bar (ptr2);   // { dg-error "ambiguous" } 
  Foo (ptr2);   // { dg-error "ambiguous" } 
  Qux (ptr2);   // { dg-error "ambiguous" } 
  return 0;
}
