https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53281
--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to David Malcolm from comment #6) > It seems best to special-case the "const member fn/param called with > non-const" cases and to report them directly in terms of the types in user's > source with and without "const", and to be explicit about which qualifier(s) > are lost. Don't forget 'volatile', which is rarely used for member function qualifiers, but we might as well handle both at once (as my patches above do). > Proposed output for the case in comment #3: > > cv.cc: In member function ‘void Foo::bar2(const Foo&)’: > cv.cc:4:26: error: passing ‘const Foo’ as ‘this’ argument discards 'const' > qualifier [-fpermissive] > foo.bar1(); > ^ > cv.cc:2:14: note: in call to ‘void Foo::bar1()’ which is non-const > void bar1() {} > ^~~~ This has a number of problems, see comment 5 for discussion and a patch.