This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Parse error in expression new (int*)[10]
- From: "James KANZE" <jkanze at caicheuvreux dot com>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 31 Jan 2003 14:07:03 +0100
- Subject: Parse error in expression new (int*)[10]
- Sensitivity:
The following (illegal) program compiles with g++ 3.1:
-----------------------------------------
#include <iostream>
#include <typeinfo>
void
f()
{
int** ppi = new (int*)[ 10 ] ;
}
int
main()
{
std::cout << typeid( new (int*)[10] ).name() << '\n' ;
return 0 ;
}
-----------------------------------------
There should be a type error on the line in the function f. The output
from the typeid in main indicates that g++ is somehow interpreting this
as if the parentheses weren't there in the new expression.
Here's the protocol from compiling the code with -v, and then executing
it:
-----------------------------------------
054@~/tmp/gcc3 (19): g++3 -v bad.cc -o bad
Remading specs from /home/team02/jakan/gnu/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.1/specs
Configured with: ./configure --previx ../..
Thread model: posix
gcc version 3.1
/home/team02/jakan/gnu/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.1/cc1plus -v -iprefix
/home/team02/jakan/gnu/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.1/ -D__GNUC__=3 -D__GNUC_MINOR__=1 -D__GNUC_PATCHLEVEL__=0 -Dsparc -Dsun -Dunix
-D__svr4__ -D__SVR4 -D__PRAGMA_REDEFINE_EXTNAME -D__sparc__ -D__sun__ -D__unix__ -D__svr4__ -D__SVR4 -D__PRAGMA_REDEFINE_EXTNAME -D__sparc -D__sun
-D__unix -Asystem=unix -Asystem=svr4 -D__NO_INLINE__ -D__STDC_HOSTED__=1 -D_XOPEN_SOURCE=500 -D_LARGEFILE_SOURCE=1 -D_LARGEFILE64_SOURCE=1
-D__EXTENSIONS__ -D__SIZE_TYPE__=unsigned int -D__PTRDIFF_TYPE__=int -D__WCHAR_TYPE__=long int -D__WINT_TYPE__=long int -D__GCC_NEW_VARARGS__
-Acpu=sparc -Amachine=sparc bad.cc -D__GNUG__=3 -D__DEPRECATED -D__EXCEPTIONS -D__GXX_ABI_VERSION=100 -quiet -dumpbase bad.cc -version -o
/var/tmp//cckasQOm.s
GNU CPP version 3.1 (cpplib) (sparc ELF)
GNU C++ version 3.1 (sparc-sun-solaris2.8)
compiled by GNU C version 3.1.
ignoring nonexistent directory "/home/team02/jakan/gnu/sparc-sun-solaris2.8/include"
ignoring nonexistent directory "/usr/local/include"
ignoring nonexistent directory "/home/team02/jakan/gnu/sparc-sun-solaris2.8/include"
ignoring duplicate directory "/home/team02/jakan/gnu/include/g++-v3"
ignoring duplicate directory "/home/team02/jakan/gnu/include/g++-v3/sparc-sun-solaris2.8"
ignoring duplicate directory "/home/team02/jakan/gnu/include/g++-v3/backward"
ignoring duplicate directory "/home/team02/jakan/gnu/lib/gcc-lib/sparc-sun-solaris2.8/3.1/include"
#include "..." search starts here:
#include <...> search starts here:
/home/team02/jakan/gnu/include/g++-v3
/home/team02/jakan/gnu/include/g++-v3/sparc-sun-solaris2.8
/home/team02/jakan/gnu/include/g++-v3/backward
/home/team02/jakan/gnu/lib/gcc-lib/sparc-sun-solaris2.8/3.1/include
/home/team02/jakan/gnu/include
/usr/include
End of search list.
/usr/ccs/bin/as -V -Qy -s -o /var/tmp//cclWR6bn.o /var/tmp//cckasQOm.s
/usr/ccs/bin/as: Sun WorkShop 6 99/08/18
/home/team02/jakan/gnu/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.1/collect2 -V -Y P,/usr/ccs/lib:/usr/lib -Qy -o bad
/home/team02/jakan/gnu/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.1/crt1.o /home/team02/jakan/gnu/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.1/crti.o
/usr/ccs/lib/values-Xa.o /home/team02/jakan/gnu/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.1/crtbegin.o
-L/home/team02/jakan/gnu/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.1 -L/home/team02/jakan/gnu/bin/../lib/gcc-lib -L/usr/ccs/bin -L/usr/ccs/lib
-L/home/team02/jakan/gnu/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.1/../../.. /var/tmp//cclWR6bn.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc -lc
/home/team02/jakan/gnu/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.1/crtend.o /home/team02/jakan/gnu/bin/../lib/gcc-lib/sparc-sun-solaris2.8/3.1/crtn.o
ld: Solaris Link Editors: 5.8-1.272
054@~/tmp/gcc3 (20): bad
PPi
-----------------------------------------
--
James Kanze mailto:jkanze@caicheuvreux.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
"This message, including any attachments may contain confidential and
privileged material; it is intended only for the person to whom it is
addressed. Its contents do not constitute a commitment by Crédit
Agricole Indosuez Cheuvreux except where provided for in a written
agreement. Crédit Agricole Indosuez Cheuvreux assumes no liability or
responsibility for the consequences arising out of a delay and/or loss
in transit of this message, or for corruption or other error(s)
arising in its transmission and for any misuse or fraudulent use which
may be made thereof. If you are not the intended recipient, please
contact us and abstain from any disclosure, use or dissemination. To
the extent that this message contains research information and/or
recommendations, these are provided on the same basis as Crédit
Agricole Indosuez Cheuvreux's published research and the recipient
must have regard to all disclosures and disclaimers contained
therein."