The following code fails to compile because the copy constructor has a non const argument - it works if the const qualifier is added to the input:
class t1 { public: t1(t1& tr); t1 dosomething(const t1& v) const; t1 dosamethingagain(const t1& v) const { return dosomething(v); } t1 operator%=(const t1& v) const { return dosomething(v); } }; The compiler error messages are: test.cpp: In member function `t1 t1::dosamethingagain(const t1&) const': test.cpp:7: error: no matching function for call to `t1::t1(t1)' test.cpp:4: error: candidates are: t1::t1(t1&) test.cpp: In member function `t1 t1::operator%=(const t1&) const': test.cpp:8: error: no matching function for call to `t1::t1(t1)' test.cpp:4: error: candidates are: t1::t1(t1&) -- Summary: Compiler error for copy constructor with non const input Product: gcc Version: 3.3.6 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: richard at rggibbs dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25231