[Bug c++/19291] New: Warning "cannot pass objects of non-POD type" should be an error
loose at astron dot nl
gcc-bugzilla@gcc.gnu.org
Thu Jan 6 13:48:00 GMT 2005
<code>
#include <string>
#include <cstdio>
int main()
{
std::string s("Hello World");
printf("%s\n", s);
return 0;
}
</code>
$ /usr/local/gcc343/bin/g++ nonPODWarn.cc
nonPODWarn.cc: In function `int main()':
nonPODWarn.cc:6: warning: cannot pass objects of non-POD type `struct
std::string' through `...'; call will abort at runtime
This warning should IMHO really be turned into an error. The diagnostic ends
with "... call will abort at runtime", which sounds pretty severe to me!
$ /usr/local/gcc343/bin/g++ -v -save-temps nonPODWarn.cc
Reading specs from /usr/local/gcc343/lib/gcc/i686-pc-linux-gnu/3.4.3/specs
Configured with: ../gcc-3.4.3/configure --prefix=/usr/local/gcc343 --enable-
threads=posix
Thread model: posix
gcc version 3.4.3
/usr/local/gcc343/libexec/gcc/i686-pc-linux-gnu/3.4.3/cc1plus -E -quiet -v -
D_GNU_SOURCE nonPODWarn.cc -mtune=pentiumpro -o nonPODWarn.ii
ignoring nonexistent directory "/usr/local/gcc343/lib/gcc/i686-pc-linux-
gnu/3.4.3/../../../../i686-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/gcc343/lib/gcc/i686-pc-linux-gnu/3.4.3/../../../../include/c++/3.4.3
/usr/local/gcc343/lib/gcc/i686-pc-linux-
gnu/3.4.3/../../../../include/c++/3.4.3/i686-pc-linux-gnu
/usr/local/gcc343/lib/gcc/i686-pc-linux-
gnu/3.4.3/../../../../include/c++/3.4.3/backward
/usr/local/include
/usr/local/gcc343/include
/usr/local/gcc343/lib/gcc/i686-pc-linux-gnu/3.4.3/include
/usr/include
End of search list.
/usr/local/gcc343/libexec/gcc/i686-pc-linux-gnu/3.4.3/cc1plus -fpreprocessed
nonPODWarn.ii -quiet -dumpbase nonPODWarn.cc -mtune=pentiumpro -auxbase
nonPODWarn -version -o nonPODWarn.s
GNU C++ version 3.4.3 (i686-pc-linux-gnu)
compiled by GNU C version 3.4.3.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
nonPODWarn.cc: In function `int main()':
nonPODWarn.cc:6: warning: cannot pass objects of non-POD type `struct
std::string' through `...'; call will abort at runtime
as -V -Qy -o nonPODWarn.o nonPODWarn.s
GNU assembler version 2.13.90.0.18 (i386-redhat-linux) using BFD version
2.13.90.0.18 20030206
/usr/local/gcc343/libexec/gcc/i686-pc-linux-gnu/3.4.3/collect2 --eh-frame-hdr -
m elf_i386 -dynamic-linker /lib/ld-
linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o /usr/local/gcc343/lib/gcc/i686-pc-
linux-gnu/3.4.3/crtbegin.o -L/usr/local/gcc343/lib/gcc/i686-pc-linux-gnu/3.4.3 -
L/usr/local/gcc343/lib/gcc/i686-pc-linux-gnu/3.4.3/../../.. nonPODWarn.o -
lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/local/gcc343/lib/gcc/i686-pc-
linux-gnu/3.4.3/crtend.o /usr/lib/crtn.o
--
Summary: Warning "cannot pass objects of non-POD type" should be
an error
Product: gcc
Version: 3.4.3
Status: UNCONFIRMED
Severity: enhancement
Priority: P2
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: loose at astron dot nl
CC: gcc-bugs at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19291
More information about the Gcc-bugs
mailing list