diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index a8259b06c97..6604d68075b 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2010-10-04 Paolo Carlini + + * include/std/functional (function<>::swap): Use std::swap. + * include/tr1/functional (function<>::swap): Likewise. + 2010-10-04 Andreas Schwab * acinclude.m4 (GLIBCXX_ENABLE): Properly quote argument to diff --git a/libstdc++-v3/include/std/functional b/libstdc++-v3/include/std/functional index d137f47eb09..dcd7ab83d2e 100644 --- a/libstdc++-v3/include/std/functional +++ b/libstdc++-v3/include/std/functional @@ -1940,15 +1940,9 @@ namespace std */ void swap(function& __x) { - _Any_data __old_functor = _M_functor; - _M_functor = __x._M_functor; - __x._M_functor = __old_functor; - _Manager_type __old_manager = _M_manager; - _M_manager = __x._M_manager; - __x._M_manager = __old_manager; - _Invoker_type __old_invoker = _M_invoker; - _M_invoker = __x._M_invoker; - __x._M_invoker = __old_invoker; + std::swap(_M_functor, __x._M_functor); + std::swap(_M_manager, __x._M_manager); + std::swap(_M_invoker, __x._M_invoker); } // TODO: needs allocator_arg_t diff --git a/libstdc++-v3/include/tr1/functional b/libstdc++-v3/include/tr1/functional index 3340de6fffc..869150fd4c3 100644 --- a/libstdc++-v3/include/tr1/functional +++ b/libstdc++-v3/include/tr1/functional @@ -1907,15 +1907,9 @@ namespace tr1 */ void swap(function& __x) { - _Any_data __old_functor = _M_functor; - _M_functor = __x._M_functor; - __x._M_functor = __old_functor; - _Manager_type __old_manager = _M_manager; - _M_manager = __x._M_manager; - __x._M_manager = __old_manager; - _Invoker_type __old_invoker = _M_invoker; - _M_invoker = __x._M_invoker; - __x._M_invoker = __old_invoker; + std::swap(_M_functor, __x._M_functor); + std::swap(_M_manager, __x._M_manager); + std::swap(_M_invoker, __x._M_invoker); } // [3.7.2.3] function capacity