
Apologies in advance for overquoting; iPhone doesn't make it easy to cut lot of text. Whether or not this is a good idea depends on whether you think swap is fundamentally an O(1) and/or nonthrowing operation. Sent from my iPhone On Jun 19, 2008, at 2:35 PM, "Niels Dekker - mail address until 2008-12-31" <nd_mail_address_valid_until_2008-12-31@xs4all.nl> wrote:
Hi Joe, hi Steven,
Would it be okay to you if we would add support for array types to the Boost.Swap utility that is located in the sandbox?
I'm asking now, because I wrote an issue, asking the C++ Standards Committee to add an overload of std::swap for array types. And Howard Hinnant just mailed me the other day that the issue has reached status Ready. :-) LWG issue 809, "std::swap should be overloaded for array types" http://home.twcny.rr.com/hinnant/cpp_extensions/issues_preview/lwg-active.ht...
Of course, it will still take a while before STL implementations will actually add such an std::swap overload. It isn't yet part of the Standard, officially. So I would very much appreciate if boost::swap would already start supporting array types. And I think it would be helpful when implementing swap member functions for templates like boost::value_initialized<T>.
Array support could easily be added to swap/boost/utility/swap.hpp (http://svn.boost.org/trac/boost/browser/sandbox/swap/boost/utility/swap.hpp ), by overloading boost_swap_impl::swap_impl, as follows:
template<class T, std::size_t N> void swap_impl(T (& left)[N], T (& right)[N]) { for (std::size_t i = 0; i < N; ++i) { ::boost_swap_impl::swap_impl(left[i], right[i]); } }
Please tell me what you think. I do have SVN write access, so I wouldn't mind committing the necessary changes. :-)
Kind regards, -- Niels Dekker http://www.xs4all.nl/~nd/dekkerware Scientific programmer at LKEB, Leiden University Medical Center _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost