
On Mar 3, 2009, at 1:45 AM, Thorsten Ottosen wrote:
Steven Watanabe skrev:
AMDG Thorsten Ottosen wrote:
Certainly swap should be provided somehow; a fast-as-possible swap is not otherwise possible since the user can't get at the buffer pointer. boost::array supports swap, and yours should be at least as fast as that. On that precedent I'd say you should support swap() under that name. Has anyone ever complained about the deceptive slowness of boost::array's swap?
I don't know. I just stay clear of it. The point is that we don't want inexperienced users to use an O(n) swap accidently. Please define n.
n would be c.size()
I'm sorry, I know this will sound harsh, but I don't know how else to say it: we went down this road with ptr_container, and should not repeat that mistake. The instinct to protect naive users from performance pitfalls by leaving out fundamental operations (swap in this case; assignment and copy in the case of ptr_container) is just wrong. That's especially true when the implementations would NOT violate the efficiency guarantees required by the concepts. Let me also point out that std::array will support swap for C++0x (by swapping individual elements). -- David Abrahams BoostPro Computing http://boostpro.com