// Copyright (C) 2005 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 2 Apr 2005 <nathan@codesourcery.com>

// PR 20723
// Origin: Andrew Pinski <pinskia@gcc.gnu.org>
//         Nathan Sidwell <nathan@gcc.gnu.org>

template <typename T> class srp;
template <typename T> struct ptr
{
  template <typename U> ptr(const srp<U> &other); // { dg-error "ptr<T>::ptr" }
};
template <typename T> struct srp
{
  template <typename U> operator ptr<U>(void) const; // { dg-error "srp<T>::operator" }
};
ptr<int> parent_get()
{
  srp<int> parent;
  return parent; // { dg-error "is ambiguous" }
}
