The following code compiles fine in C++98 with any version of g++, compiles fine in C++0X with g++-4.4, but fails in C++0X with g++-4.6 with the error message:
bug.cc: In function void ouin(const Ray&): bug.cc:35:9: error: use of deleted function Ray::Ray(const Ray&) bug.cc:28:8: error: Ray::Ray(const Ray&) is implicitly deleted because the default definition would be ill-formed: I hope I didn't remove anything essential while reducing the example (started with 500k lines...). struct Coord { Coord(); Coord(const Coord&); }; template<typename _Tp> struct array { array(); _Tp _M_instance[1]; }; struct Ray; struct Vector { array<Coord> base; Vector(); Vector(const Ray &) ; }; struct Point { Vector base; }; struct Ray { array<Point> base; }; void ouin (Ray const& r1) { Ray r2=r1; } -- Summary: Copy constructors implicitly deleted Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: marc dot glisse at normalesup dot org GCC host triplet: x86_64-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44909