1// PR c++/44625 2// { dg-do compile } 3// { dg-options "" } 4 5template<typename FP_> struct Vec { // { dg-message "note" } 6 Vec& operator^=(Vec& rhs) { 7 union { 8 struct {FP_ x,y,z;}; 9 }; // { dg-error "anonymous struct" } 10 X = y*rhs.z() - z*rhs.y(); // { dg-error "not declared|no member" } 11 } 12 Vec& operator^(Vec& rhs) { 13 return Vec(*this)^=rhs; // { dg-message "required" } 14 } 15}; 16Vec<double> v(3,4,12); // { dg-error "no matching" } 17Vec<double> V(12,4,3); // { dg-error "no matching" } 18Vec<double> c = v^V; // { dg-message "required" } 19