1template <class T> struct PCVector2 // { dg-message "note" }
2{
3    template <class T2> PCVector2(const PCVector2<T> &cv) ; // { dg-message "note" }
4
5    PCVector2<T> operator- (const PCVector2<T> &ov) const
6	{
7	  return PCVector2<T>(ov.xFIELD, ov.yFIELD); // { dg-error "matching" }
8	  // { dg-message "(candidate|expects 1 argument, 2 provided|cannot convert)" "candidate note" { target *-*-* } 7 }
9	}
10
11    T xFIELD, yFIELD;
12};
13
14void findIntersection( PCVector2<double>& p0, PCVector2<double>& p1);
15
16
17void findIntersection( PCVector2<double>& p0, PCVector2<double>& p1)
18{
19    PCVector2<double> e = p1 - p0;	// { dg-message "required" }
20}
21