This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/16582] New: Wrong diagnostic when using "&a[1]" as template argument
- From: "giovannibajo at libero dot it" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 16 Jul 2004 01:57:47 -0000
- Subject: [Bug c++/16582] New: Wrong diagnostic when using "&a[1]" as template argument
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
Compiling the following code:
-----------------------------------------
template<class T, char* p> struct X {
X();
X(const char* q) { /* ... */ }
};
char p[] = "Vivisectionist";
X<int, p> x2; // OK
X<int, &p[0]> x3; // ERROR
-----------------------------------------
I get this error on mainline:
nontype1.cc: At global scope:
nontype1.cc:8: error: missing `>' to terminate the template argument list
nontype1.cc:8: error: template argument 2 is invalid
nontype1.cc:8: error: expected init-declarator before '>' token
nontype1.cc:8: error: expected `,' or `;' before '>' token
The message is totally bogus. The real problem is that a call to operator[] is
not be allowed within a template argument.
This happens with both 3.4 and mainline. Not a regression though since older
versions even incorrectly accepted the code (in fact, I fixed this very issue
within the new parser).
--
Summary: Wrong diagnostic when using "&a[1]" as template argument
Product: gcc
Version: 3.5.0
Status: UNCONFIRMED
Keywords: diagnostic
Severity: normal
Priority: P2
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: giovannibajo at libero dot it
CC: gcc-bugs at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16582