
"Thorsten Ottosen" <nesotto@cs.auc.dk> writes:
"Eric Niebler" <eric@boost-consulting.com> wrote in message news:428926DB.2090108@boost-consulting.com... | | | Yes. It's exactly the same situation. You are giving collection<X> | different semantics than collection<Y>.
I guess my objection is to the use "exactly".
If I have
template< class T > class my_vec { std::vector<T> vec; };
then I might need some traits for dealing with the bool case.
What kind of traits?
If I have
template< class Range, class OutIter > void copy( const Range&, OutIter );
then I just need to be able to say what a Range means.
Yes, that's what makes your case worse. It doesn't just change the interface details as with vector<T>, it changes the fundamental meaning of T[N], leading to potential undefined behavior in some very common cases.
I think it would be wrong for the algorithm to assume anything; that would not give the caller a chance to decide.
Then you can't decide anything about T[N] either. People use all kinds of arrays with terminating sentinels, not just arrays of char.
Yeah, sorry. I guess I was equally annoyed by the claim that we had a new problem simply by stating vector<bool> was a problem.
It's a valid claim, made without ad-hominem overtones.
I don't see that close an analogy and so the argument made by Dave could be used to to argue for anything.
If you don't see the analogy, you're not looking hard enough. It happens whenever a whole category of types gets a particular treatment by generic code, but just a few outliers in that category get a different treatment. And as I said in my previous posting, the problem is much worse your case because there's no useful underlying concept that is modeled by both the ordinary array and the null-terminated string.
I don't think the decisions of the range library was a big issue during the review; Peter Dimov was, I think, one who said something along your opinion.
Peter Dimov is one of those annoying people, you'll come to learn, who is almost always right. I wouldn't draw too many conclusions from the fact that perhaps nobody else objected to the design. Peter is often ahead of the perceptual curve, and some of us weren't participating in the review. -- Dave Abrahams Boost Consulting www.boost-consulting.com