libstdc++/3759: nonconforming use of unqualified std:: names

Loren James Rittle rittle@latour.rsch.comm.mot.com
Wed Jul 25 14:15:00 GMT 2001


In article < 010501c11465$8c0d7870$6701a8c0@abeast1.com >,
"David Abrahams" <david.abrahams@rcn.com> writes:

> I agree that 14.6.4 is not a relevant section. To violate anything in
> section 14 there would have to be a core compiler bug. I don't believe there
> is one. I think you have a library bug.

I too believe that the core g++ compiler is working as required by
14.6.4 [temp.dep.res].  The reason I cited 14.6.4 in particular is
that it explains the correct behavior of the compiler related to
dependent name lookup in light of name spaces and templates.  It is
the *library* that violates 14.6.4 through its use of an unqualified
name in the template implementation of a method that pulls a non-std
name space...

If fill<>() was not a template function in namespace std, then this
would be a non-issue, right?  The only reason 14.6.4 can come into
play within a library implementation is when a user-provided template
argument can come from a name space other than std (in this case, it
arrives indirectly through vector<>, etc but the issue is the same).

Is my logic incorrect for citing 14.6.4?  If so, which section(s)
should be cited?

Regards,
Loren



More information about the Gcc-bugs mailing list