// PR c++/14930
template<typename T> class Point;
template<> class Point<double> {
  friend class Plane;
  double v;
};
struct Plane {
  double get(const Point<double>& p);
};
double Plane::get(const Point<double> &p) { return p.v; }
// PR c++/14930
template<typename T> class Point;
template<> class Point<double> {
  friend class Plane;
  double v;
};
struct Plane {
  double get(const Point<double>& p);
};
double Plane::get(const Point<double> &p) { return p.v; }