This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] partial fix for PR 13594 (3.4 regression)

On Jan 12, 2004, Alexandre Oliva <> wrote:

> On Jan 10, 2004, Eric Botcazou <> wrote:
>> FAIL: 23_containers/bitset/invalidation/ (test for excess errors)
>> WARNING: 23_containers/bitset/invalidation/ compilation failed to produce 
>> executable

> Here's a patch that fixes this problem.  My mistake was to assume that
> it was ok to use a single queue for strongly-associated and other
> namespaces.  Now I see it isn't.

Digging deeper, I see that it should be.  See, for example,
[namespace.udir]/5.  It doesn't seem like a name found in a given
namespace is to hide names found in other namespaces whose
declarations are to be visible in it because of using directives.

This means not only that our search is broken, for not following using
directives when a definition is found, but also that libstdc++
__gnu_debug is broken, for relying on such brokenness to obtain the
desired effect.  More precisely, the problem in libstdc++ is that
__gnu_debug contains using directives for both __gnu_debug_def
(strong) and std (not strong).  If we were to follow the Standard
semantics, of following using directives regardless of having found a
name, we'd find that the names defined in both std (or __gnu_norm) and
__gnu_debug_def are ambiguous in __gnu_debug.  Oops.

Now how do we get out of this corner we've painted ourselves into? :-(

Alexandre Oliva   Enjoy Guarana', see
Happy GNU Year!                     oliva@{,}
Red Hat GCC Developer                 aoliva@{,}
Free Software Evangelist                Professional serial bug killer

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]