public inbox for gcc-prs@sourceware.org help / color / mirror / Atom feed
From: "Rafal Dabrowa" <rdabrowa@poczta.onet.pl> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, Subject: Re: c++/7008: unexpected error message "var was not declared in this scope" Date: Fri, 12 Jul 2002 23:06:00 -0000 [thread overview] Message-ID: <20020713060601.29241.qmail@sources.redhat.com> (raw) The following reply was made to PR c++/7008; it has been noted by GNATS. From: "Rafal Dabrowa" <rdabrowa@poczta.onet.pl> To: <lerdsuwa@gcc.gnu.org>, <gcc-bugs@gcc.gnu.org>, <gcc-prs@gcc.gnu.org>, <nobody@gcc.gnu.org>, <gcc-gnats@gcc.gnu.org> Cc: Subject: Re: c++/7008: unexpected error message "var was not declared in this scope" Date: Sat, 13 Jul 2002 08:12:10 +0200 Gcc behaves inconsequently in this case. Consider the following code: void doit( int var ) { struct st { char s[sizeof(var)]; } zz; } int main() { doit(3); } This code compiles fine, even that var is a function argument, not a static/global variable. Now, we convert this function to a template: template<class T> void doit( T var ) { struct st { char s[sizeof(var)]; } zz; } int main() { doit(3); } Compiler complains in this case. Is it not strange ? It may be even worse. Consider we have a global varible named "var". In first case, compiler would take local variable. In second - global one. This inconsequence I treat as a compiler bug, which shall be corrected. Similar problem occurs when use constants. See code below. We have two functions with identical body, but the first one is an ordinary function, and the second one is a template. And compiler takes local N in first function, global N in second. This is not a correct behavior. -------------- code begin --------------- const int N = 500; void f(int var) { const int N = 5; struct { char str[N]; } zz; cout << "sizeof(zz) = " << sizeof(zz) << endl; } template <class T> void g(T var) { const int N = 5; struct { char str[N]; } zz; cout << "sizeof(zz) = " << sizeof(zz) << endl; } int main() { f(1); g(1); } -------------- code end --------------- With regards -- Rafal Dabrowa ----- Original Message ----- From: <lerdsuwa@gcc.gnu.org> To: <gcc-bugs@gcc.gnu.org>; <gcc-prs@gcc.gnu.org>; <nobody@gcc.gnu.org>; <rdabrowa@poczta.onet.pl> Sent: Thursday, July 11, 2002 4:39 PM Subject: Re: c++/7008: unexpected error message "var was not declared in this scope" > Synopsis: unexpected error message "var was not declared in this scope" > > State-Changed-From-To: open->closed > State-Changed-By: lerdsuwa > State-Changed-When: Thu Jul 11 07:39:20 2002 > State-Changed-Why: > Not a bug. According to the standard, section 9.8p1: > > Declarations in a local class can use only type names, > static variables, extern variables and functions, and > enumerators from the enclosing scope. > > The 'var' which is a function parameter is not allowed. > > http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&p r=7008
next reply other threads:[~2002-07-13 6:06 UTC|newest] Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top 2002-07-12 23:06 Rafal Dabrowa [this message] -- strict thread matches above, loose matches on Subject: below -- 2002-07-14 4:56 Rafal Dabrowa 2002-07-13 2:41 lerdsuwa 2002-07-11 7:39 lerdsuwa 2002-06-12 13:16 rdabrowa
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20020713060601.29241.qmail@sources.redhat.com \ --to=rdabrowa@poczta.onet.pl \ --cc=gcc-prs@gcc.gnu.org \ --cc=nobody@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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).