[Bug c++/39728] diagnostic for private operator= is voluminous and unhelpful
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Apr 16 11:11:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39728
--- Comment #5 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-04-16 11:10:07 UTC ---
Maybe the most widely used term is "compiler-generated" but I prefer implicity
defined.
(In reply to comment #2)
> * Do not show "In member function", it clutters the output and it is duplicated
> info because they are already mentioned in the note.
I'm not sure about this suggestion.
/home/redi/gcc/4.x/include/c++/4.8.0/bits/ios_base.h: In member function
'std::basic_ios<char>& std::basic_ios<char>::operator=(const
std::basic_ios<char>&)':
This is useful info, it tells me the (implicitly-defined) context in which the
private operator= was needed.
/home/redi/gcc/4.x/include/c++/4.8.0/bits/ios_base.h:791:5: error:
'std::ios_base& std::ios_base::operator=(const std::ios_base&)' is private
operator=(const ios_base&);
^
This is useful, it's the private operator= that was needed, but inaccessible.
In file included from /home/redi/gcc/4.x/include/c++/4.8.0/ios:45:0,
from /home/redi/gcc/4.x/include/c++/4.8.0/istream:40,
from /home/redi/gcc/4.x/include/c++/4.8.0/fstream:40,
from f.cc:1:
/home/redi/gcc/4.x/include/c++/4.8.0/bits/basic_ios.h:64:11: error: within this
context
class basic_ios : public ios_base
^
The caret diagnostic is useless here, because an implictly-defined function has
no location.
More information about the Gcc-bugs
mailing list