[Bug c++/84897] Better handling of unqualified "string"
egallager at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Mar 16 23:31:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84897
Eric Gallager <egallager at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |egallager at gcc dot gnu.org
--- Comment #4 from Eric Gallager <egallager at gcc dot gnu.org> ---
(In reply to David Malcolm from comment #0)
> Reddit user "Boojum" suggested:
>
> > As far as other paper cuts, here's one that catches me
> > surprisingly frequently:
>
> #include <string>
> int main() {
> string x("foo");
> }
>
> > Obviously, I "forgot" to either qualify string as std::string,
> > add using namespace std;, or add using std::string;.
> >
> > Here's what GCC 7.2 tells me (header paths elided):
>
> namespace.cpp: In function ‘int main()’:
> namespace.cpp:3:5: error: ‘string’ was not declared in this scope
> string x("foo");
> ^~~~~~
> namespace.cpp:3:5: note: suggested alternatives:
> In file included from .../string:39:0,
> from namespace.cpp:1:
> .../stringfwd.h:74:33: note: ‘std::__cxx11::string’
> typedef basic_string<char> string;
> ^~~~~~
> .../stringfwd.h:74:33: note: ‘std::__cxx11::string’
>
> > On the other hand, here's what Clang 6 tells me:
>
> namespace.cpp:3:5: error: unknown type name 'string'; did you mean
> 'std::string'?
> string x("foo");
> ^~~~~~
> std::string
> .../stringfwd.h:74:33: note: 'std::string' declared here
> typedef basic_string<char> string;
> ^
> 1 error generated.
>
> > Much nicer. It tells me exactly which namespace I probably
> > meant to use and proposes a fix-it qualifying the identifier.
>
Link to this comment is here:
https://www.reddit.com/r/programming/comments/84oizv/usability_improvements_in_gcc_8/dvrj48o/
More information about the Gcc-bugs
mailing list