[Bug c++/85690] New: missing suggested header for std-qualified names
msebor at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon May 7 23:50:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85690
Bug ID: 85690
Summary: missing suggested header for std-qualified names
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: msebor at gcc dot gnu.org
Target Milestone: ---
For the test case below, GCC suggests to include <cstddef> for the unqualified
reference to ptrdiff_t but it doesn't offer a similar suggestion for the
reference to std::size_t. It should suggest the header to include for both.
In addition, since the <cxxx> kind of C headers need not define symbols in the
global namespace (and not implementations do define them there), for
unqualified references to such symbols GCC should suggest the traditional
<xxx.h> header, and the <cxxx> kind only for std-qualified references.
$ cat b.c && gcc -O3 -S -Wall -Wextra -Wpedantic -xc++ b.c
void f (ptrdiff_t);
void g (std::size_t);
b.c:1:18: error: variable or field ‘f’ declared void
void f (ptrdiff_t);
^
b.c:1:9: error: ‘ptrdiff_t’ was not declared in this scope
void f (ptrdiff_t);
^~~~~~~~~
b.c:1:9: note: ‘ptrdiff_t’ is defined in header ‘<cstddef>’; did you forget to
‘#include <cstddef>’?
+#include <cstddef>
void f (ptrdiff_t);
^~~~~~~~~
b.c:3:20: error: variable or field ‘g’ declared void
void g (std::size_t);
^
b.c:3:14: error: ‘size_t’ is not a member of ‘std’
void g (std::size_t);
^~~~~~
More information about the Gcc-bugs
mailing list