// { dg-do compile }
template <typename V>
struct b
{
  template <typename T>
  class a
  {
    template <typename>
    friend class a;
    T t_;
   public:
    a() {}
    a(a<T *> const &);
  };
};
template <typename V>
template <typename T>
b<V>::a<T>::a(a<T *> const &rhs): t_(*rhs.t_)
{}
int
f ()
{
  b<void *>::a<char *> q;
  b<void *>::a<char> w(q);
  return 0;
}