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
 


             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: link
Be 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).