------- Comment #14 from pcarlini at suse dot de  2006-04-20 09:37 -------
(In reply to comment #12)
> I don't think that the problem is in the STL. The STL can be as tricky as it
> wants, including use of operator,(). It should not be possible for the actual
> operator,()s I declared to hijack the STL the way that happened, because 1) my
> declarations were out of scope for the STL code and 2) their signatures did 
> not
> match the STL call site. This suggests a compiler bug to me, not an STL
> mis-design.

Actually, I'm not at all sure, given: 1- our vector<>::iterator not being a
built-in type; 2- ADL rules. 3- The nature of fill_n (templated on *both* _Size
and _OutputIterator). Again, I'm not a language lawyer, but I think that,
strictly speaking, the compiler may legally find and match your operator,

I can certainly patch fill_n to avoid the operator, no big deal, my question is
more general, whether, given our class-type vector<>::iterator, given the
"unrestrictedness" of many <algorithm> templates, given current ADL rules,
whether it makes sense for us to go that route trying piecewise to "improve"
now the library, in the current C++03 framework.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26974

Reply via email to