[Bug c++/88512] Too much STL in error output
jg at jguk dot org
gcc-bugzilla@gcc.gnu.org
Fri Feb 15 19:49:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88512
--- Comment #12 from Jonny Grant <jg at jguk dot org> ---
(In reply to Jonathan Wakely from comment #9)
> It's easy for you to say that after looking at the reason it failed and
> knowing what the code is trying to do (obviously "insert" modifies the
> string, so it can't be const). But the compiler has to try every overload,
> and doesn't know what your intention is, or what the word "insert" means.
>
> The problem here is (as before) that std::string has eight overloads of
> insert (and just as many for assign, and begin, and replace etc), and
> there's nothing the compiler can do about that.
>
> Potentially the compiler could be changed so that if all the overload
> candidates are non-const and the object is const, it just says that. But
> that's another fairly specialized diagnostic just for this case. Most
> classes simply don't have eight overloads of the same function.
Sounds good, those insert methods aren't 'const' so at least the first line
could say that...
eg:
$ g++ -Wall -c -o int int.cpp
int.cpp: In function ‘int main()’:
int.cpp:13:21: error: no matching function for call to
‘std::string::insert(size_t, const string&) const’
str.insert(4, str2);
^
Note, ‘str’ is const and all ‘std::string::insert()’ methods are non-const
More information about the Gcc-bugs
mailing list