正在研究 c++标准库的代码, 我用的是 VS2019 ,在~VS 2019\Microsoft Visual Studio\VC\Tools\MSVC\14.22.27905\include\utility 文件内,有关 swap 的函数,其中一个重载如下
// FUNCTION TEMPLATE swap
template <class _Ty, size_t _Size, class> //这个 class
inline void swap(_Ty (&_Left)[_Size], _Ty (&_Right)[_Size])
_NOEXCEPT_COND(_Is_nothrow_swappable<_Ty>::value) { // exchange arrays stored at _Left and _Right
if (&_Left != &_Right) { // worth swapping, swap ranges
_Ty* _First1 = _Left;
_Ty* _Last1 = _First1 + _Size;
_Ty* _First2 = _Right;
for (; _First1 != _Last1; ++_First1, ++_First2) {
_STD iter_swap(_First1, _First2);
}
}
}
这个 swap 函数还有个重载版本,也有这个情况
template <class _Ty, class> //这里也是同样
inline void swap(_Ty& _Left, _Ty& _Right) _NOEXCEPT_COND(is_nothrow_move_constructible_v<_Ty>&&
is_nothrow_move_assignable_v<_Ty>) { // exchange values stored at _Left and _Right
_Ty _Tmp = _STD move(_Left);
_Left = _STD move(_Right);
_Right = _STD move(_Tmp);
}
我像问下这个 class 是什么意思
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.