template struct PCVector2 // { dg-message "note" } { template PCVector2(const PCVector2 &cv) ; // { dg-message "note" } PCVector2 operator- (const PCVector2 &ov) const { return PCVector2(ov.xFIELD, ov.yFIELD); // { dg-error "matching" } // { dg-message "(candidate|expects 1 argument, 2 provided|cannot convert)" "candidate note" { target *-*-* } 7 } } T xFIELD, yFIELD; }; void findIntersection( PCVector2& p0, PCVector2& p1); void findIntersection( PCVector2& p0, PCVector2& p1) { PCVector2 e = p1 - p0; // { dg-message "required" } }