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
[parent not found: <bug-16582-253@http.gcc.gnu.org/bugzilla/>]
* [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
[parent not found: <bug-16582-4@http.gcc.gnu.org/bugzilla/>]
* [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
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).