Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Jim Blandy <jimb@redhat.com>
To: Don Howard <dhoward@redhat.com>
Cc: <gdb@sources.redhat.com>
Subject: Re: C++ namespace using directives
Date: Mon, 29 Apr 2002 13:28:00 -0000	[thread overview]
Message-ID: <npznzm8d2d.fsf@zwingli.cygnus.com> (raw)
In-Reply-To: <Pine.LNX.4.33.0204221428420.23254-100000@theotherone.redhat-remotie.org>


Don Howard <dhoward@redhat.com> writes:
> On Tue, 16 Apr 2002, Jim Blandy wrote:
> > Could a C++ person check my understanding of `using namespace'
> > directives?
> > 
> > I'm reading Stroustrup, and the more I read about `using namespace',
> > the weirder it gets.  Check this out:
> > 
> >     namespace A
> >     {
> >       int x;
> >       int y;
> >       int z;
> >     };
> > 
> >     void f ()
> >     {
> >       int *x;
> > 
> >       {
> >         int *y;
> >         using namespace A;
> > 
> >         *x;  /* `x' refers to local x, not A::x */
> >         *y;  /* `y` refers to local y, not A::y */
> >         z;  /* `z' refers to A::z */ 
> >       }
> >     }
> 
> This example seems correct to me, as the compiler can dis-ambiguate based 
> on type-- dereference works on pointers, so x and y must refer to the 
> local versions.

No, that's not what's going on at all.  In Stroustrup's example, there
is no dereferencing going on, and he makes the same claims about which
binding each reference refers to as I do.  I added the dereferences as
a sanity check, to make sure GCC was doing the right thing.

So you see why I think this behavior is way wacky?  The `using
namespace' directive appears in the inner block, the local definition
appears in the outer block, but references to `x' in the inner block
still see the local definition in the outer block.


  reply	other threads:[~2002-04-29 20:28 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-04-16 14:41 Jim Blandy
2002-04-16 19:39 ` Gabriel Dos Reis
2002-04-22 14:52 ` Don Howard
2002-04-29 13:28   ` Jim Blandy [this message]
2002-04-29 14:30     ` Don Howard

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=npznzm8d2d.fsf@zwingli.cygnus.com \
    --to=jimb@redhat.com \
    --cc=dhoward@redhat.com \
    --cc=gdb@sources.redhat.com \
    /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