public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/16582] New: Wrong diagnostic when using "&a[1]" as template argument
@ 2004-07-16 1:57 giovannibajo at libero dot it
2004-07-16 3:36 ` [Bug c++/16582] " bangerth at dealii dot org
2004-07-16 6:50 ` pinskia at gcc dot gnu dot org
0 siblings, 2 replies; 5+ messages in thread
From: giovannibajo at libero dot it @ 2004-07-16 1:57 UTC (permalink / raw)
To: gcc-bugs
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
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/16582] Wrong diagnostic when using "&a[1]" as template argument
2004-07-16 1:57 [Bug c++/16582] New: Wrong diagnostic when using "&a[1]" as template argument giovannibajo at libero dot it
@ 2004-07-16 3:36 ` bangerth at dealii dot org
2004-07-16 6:50 ` pinskia at gcc dot gnu dot org
1 sibling, 0 replies; 5+ messages in thread
From: bangerth at dealii dot org @ 2004-07-16 3:36 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From bangerth at dealii dot org 2004-07-16 03:36 -------
Confirmed. This is about the worst message I've seen in a long
while :)
Here's what icc says:
g/x> icc -c -Xc -ansi x.cc
x.cc(8): error: this operator is not allowed in a template argument expression
X<int, &p[0]> x3; // ERROR
^
compilation aborted for x.cc (code 2)
W.
--
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever Confirmed| |1
Last reconfirmed|0000-00-00 00:00:00 |2004-07-16 03:36:36
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16582
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/16582] Wrong diagnostic when using "&a[1]" as template argument
2004-07-16 1:57 [Bug c++/16582] New: Wrong diagnostic when using "&a[1]" as template argument giovannibajo at libero dot it
2004-07-16 3:36 ` [Bug c++/16582] " bangerth at dealii dot org
@ 2004-07-16 6:50 ` pinskia at gcc dot gnu dot org
1 sibling, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-07-16 6:50 UTC (permalink / raw)
To: gcc-bugs
--
What |Removed |Added
----------------------------------------------------------------------------
Severity|normal |minor
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16582
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/16582] Wrong diagnostic when using "&a[1]" as template argument
[not found] <bug-16582-4@http.gcc.gnu.org/bugzilla/>
@ 2021-07-31 23:13 ` pinskia at gcc dot gnu.org
0 siblings, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu.org @ 2021-07-31 23:13 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=16582
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
C++11/C++14/C++98 gives:
<source>:8:13: error: template argument 2 is invalid
8 | X<int, &p[0]> x3; // ERROR
| ^
While C++17 gives:
<source>:8:8: error: '& p[0]' is not a valid template argument of type 'char*'
because 'p[0]' is not a variable
8 | X<int, &p[0]> x3; // ERROR
| ^~~~~
And C++20 accepts the code.
Note clang accepts the code for C++17 and C++20.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug c++/16582] Wrong diagnostic when using "&a[1]" as template argument
[not found] <bug-16582-253@http.gcc.gnu.org/bugzilla/>
@ 2006-02-26 19:46 ` pinskia at gcc dot gnu dot org
0 siblings, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2006-02-26 19:46 UTC (permalink / raw)
To: gcc-bugs
------- Comment #2 from pinskia at gcc dot gnu dot org 2006-02-26 19:29 -------
the mainline gives:
t.cc:9: error: template argument 2 is invalid
t.cc:9: error: invalid type in declaration before ';' token
Which might be an ok enough error message.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16582
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-07-31 23:13 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-07-16 1:57 [Bug c++/16582] New: Wrong diagnostic when using "&a[1]" as template argument giovannibajo at libero dot it
2004-07-16 3:36 ` [Bug c++/16582] " bangerth at dealii dot org
2004-07-16 6:50 ` pinskia at gcc dot gnu dot org
[not found] <bug-16582-253@http.gcc.gnu.org/bugzilla/>
2006-02-26 19:46 ` pinskia at gcc dot gnu dot org
[not found] <bug-16582-4@http.gcc.gnu.org/bugzilla/>
2021-07-31 23:13 ` pinskia at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).