前言
之前我们研究了std::bind, std::move的实现原理,如有兴趣可以往前翻翻。本节讨论下std::swap, 也比较简单。
实现代码
/usr/include/c++/8/bits/move.h
158 #define _GLIBCXX_MOVE(__val) std::move(__val)
178 #if __cplusplus >= 201103L
179 typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>,
180 is_move_constructible<_Tp>,
181 is_move_assignable<_Tp>>::value>::type
182 swap(_Tp& __a, _Tp& __b)
183 noexcept(__and_<is_nothrow_move_constructible<_Tp>,
184 is_nothrow_move_assignable<_Tp>>::value)
185 #else
186 void
187 swap(_Tp& __a, _Tp& __b)
188 #endif
189 {
190 // concept requirements
191 __glibcxx_function_requires(_SGIAssi
订阅专栏 解锁全文
1749

被折叠的 条评论
为什么被折叠?



