egcs-1.1: C++ aggregate initialization bug?
Mumit Khan
khan@xraylith.wisc.edu
Wed Oct 21 15:28:00 GMT 1998
/*
The following is a condensed version of a bug report filed by Tom Uban
<uban@mail.netnitco.net>.
I believe that egcs is incorrect in trying to use a copy constructor in
the aggregate initialization below. According to Dec'96 DWP Sec 12.6.2.2
"Explicit Initialization", the initialization should only call test(int),
and not nomplain about non-public copy constructor.
Intel-3.0, which uses EDG front-end, apparently agrees with the
interpretation above, but egcs-1.1 does not.
Could someone please clarify?
Regard,
Mumit
*/
struct test
{
test(int);
private: // making this public "fixes" the problem
test(const test &hack_to_copy);
};
test testarray[]= { test(3) };
/*
Reading specs from /usr/local/egcs/lib/gcc-lib/i686-pc-linux-gnu/egcs-2.91.57/specs
gcc version egcs-2.91.57 19980901 (egcs-1.1 release)
/usr/local/egcs/lib/gcc-lib/i686-pc-linux-gnu/egcs-2.91.57/cpp -lang-c++ -v -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=91 -trigraphs -D__STRICT_ANSI__ -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem(posix) -D__EXCEPTIONS
-pedantic -Asystem(unix) -Acpu(i386) -Amachine(i386) -D__i386 -D__i386__ -D__i686 -D__i686__ -D__pentiumpro -D__pentiumpro__ aggr-init-bug.cc /tmp/ccJd62QH.ii
GNU CPP version egcs-2.91.57 19980901 (egcs-1.1 release) (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
/usr/local/egcs/include/g++
/usr/local/include
/usr/local/egcs/i686-pc-linux-gnu/include
/usr/local/egcs/lib/gcc-lib/i686-pc-linux-gnu/egcs-2.91.57/include
/usr/include
End of search list.
/usr/local/egcs/lib/gcc-lib/i686-pc-linux-gnu/egcs-2.91.57/cc1plus /tmp/ccJd62QH.ii -quiet -dumpbase aggr-init-bug.cc -pedantic -ansi -version -o /tmp/ccOTlKLe.s
GNU C++ version egcs-2.91.57 19980901 (egcs-1.1 release) (i686-pc-linux-gnu) compiled by GNU C version egcs-2.91.57 19980901 (egcs-1.1 release).
aggr-init-bug.cc:25: `test::test(const struct test &)' is private
aggr-init-bug.cc:28: within this context
aggr-init-bug.cc: In function `(static initializers for aggr-init-bug.cc)':
aggr-init-bug.cc:25: `test::test(const struct test &)' is private
aggr-init-bug.cc:28: within this context
*/
More information about the Gcc-bugs
mailing list