http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51480
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-12-09 10:02:52 UTC --- If you think it's useful to modify an object that will never be used, you can do it like this: struct A { }; void accepted(const A &a = A()) { } void rejected(A &a) { } void rejected() { A unused; rejected(unused); }