This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/18674] New: G++ accepts bad elaborated type specifiers
- From: "gcc-bugzilla at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 25 Nov 2004 14:18:43 -0000
- Subject: [Bug c++/18674] New: G++ accepts bad elaborated type specifiers
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
elaborated-type-speficier:
class-key ::? nested-name-specifier? identifier
class-key ::? nested-name-specifier? template? template-id
enum ::? nested-name-specifier? identifier
typename ::? nested-name-specifier? identifier
typename ::? nested-name-specifier? template? template-id
According to the paragraph 7.1.5.3.3 of the standard, the three first
rules need to refer to class, union, or enum depending on the first
keyword. But gcc accepts it to be used whenever you want.
Environment:
System: Linux nostromo 2.4.27-1-686 #1 Fri Sep 3 06:28:00 UTC 2004 i686 GNU/Linux
Architecture: i686
host: i486-pc-linux-gnu
build: i486-pc-linux-gnu
target: i486-pc-linux-gnu
configured with: ../src/configure -v --enable-languages=c,c++,java,objc,ada --prefix=/usr/lib/gcc-snapshot --enable-shared --with-system-zlib --enable-nls --enable-threads=posix --without-included-gettext --disable-werror --enable-__cxa_atexit --enable-libstdcxx-allocator=mt --enable-clocale=gnu --enable-libstdcxx-debug --enable-java-gc=boehm --enable-java-awt=gtk i486-linux-gnu
How-To-Repeat:
The command line used was:
g++-snapshot -std=c++98 -pedantic -W -Wall -c e.cc
The following source file is invalid but gcc do not say anything:
template <typename I>
static void g() {
enum I::t a;
(void) a;
}
struct B {
typedef int t;
};
void h()
{
g<B>();
}
--
Summary: G++ accepts bad elaborated type specifiers
Product: gcc
Version: 0.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: valentin at lrde dot epita dot fr
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: i486-pc-linux-gnu
GCC host triplet: i486-pc-linux-gnu
GCC target triplet: i486-pc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18674