NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
交换性工具

实现类型交换相关操作 更多...

交换性工具 的协作图:

struct  is_swappable< T >
 判断类型是否可以与自身交换 更多...
struct  is_nothrow_swappable< T >
 判断类型是否可以与自身无异常交换 更多...
struct  is_swappable_from< T1, T2, Dummy >
 判断是否可以调用swap从T1交换到T2 更多...
struct  is_swappable_with< T1, T2 >
 判断两个类型是否可以互相交换 更多...
struct  is_nothrow_swappable_from< T1, T2 >
 判断是否可以无异常地从T1交换到T2 更多...
struct  is_nothrow_swappable_with< T1, T2 >
 判断两个类型是否可以无异常地互相交换 更多...
struct  is_ADL_swappable< T, Dummy >
 判断类型是否支持通过ADL查找的swap 更多...
struct  is_trivially_swappable< T >
 判断类型是否可以平凡交换 更多...

函数

template<typename T>
NEFORCE_CONSTEXPR14 enable_if_t< is_move_constructible_v< T > &&is_move_assignable_v< T > > swap (T &lhs, T &rhs) noexcept(is_nothrow_move_constructible_v< T > &&is_nothrow_move_assignable_v< T >)
 交换两个相同类型的值
template<typename T, size_t Size>
NEFORCE_CONSTEXPR14 enable_if_t< is_swappable< T >::value > swap (T(&lhs)[Size], T(&rhs)[Size]) noexcept(is_nothrow_swappable< T >::value)
 交换两个相同类型的数组
void swap ()=delete
 删除无参数的swap重载
template<typename T, typename U = T>
NEFORCE_CONSTEXPR14 T exchange (T &val, U &&new_val) noexcept(is_nothrow_move_constructible_v< T > &&is_nothrow_assignable_v< T &, U >)
 将新值赋给对象并返回旧值

变量

template<typename T>
NEFORCE_INLINE17 constexpr bool is_swappable_v = is_swappable<T>::value
 is_swappable的便捷变量模板
template<typename T>
NEFORCE_INLINE17 constexpr bool is_nothrow_swappable_v = is_nothrow_swappable<T>::value
 is_nothrow_swappable的便捷变量模板
template<typename T>
NEFORCE_INLINE17 constexpr bool is_trivially_swappable_v = is_trivially_swappable<T>::value
 is_trivially_swappable的便捷变量模板

详细描述

实现类型交换相关操作

函数说明

◆ exchange()

template<typename T, typename U = T>
NEFORCE_CONSTEXPR14 T exchange ( T & val,
U && new_val ) const &
noexcept

将新值赋给对象并返回旧值

模板参数
T对象类型
U新值类型
参数
val要替换的对象
new_val新值
返回
对象的旧值

引用了 is_nothrow_assignable_v , 以及 is_nothrow_move_constructible_v.

被这些函数引用 virtual_thread_task::operator=() , 以及 socket_base::release().

◆ swap() [1/2]

template<typename T>
NEFORCE_CONSTEXPR14 enable_if_t< is_move_constructible_v< T > &&is_move_assignable_v< T > > swap ( T & lhs,
T & rhs ) const &&
noexcept

交换两个相同类型的值

模板参数
T值的类型
参数
lhs左操作数
rhs右操作数

引用了 is_nothrow_move_assignable_v , 以及 is_nothrow_move_constructible_v.

◆ swap() [2/2]

template<typename T, size_t Size>
NEFORCE_CONSTEXPR14 enable_if_t< is_swappable< T >::value > swap ( T(&) lhs[Size],
T(&) rhs[Size] )
noexcept

交换两个相同类型的数组

模板参数
T数组元素类型
Size数组大小
参数
lhs左操作数数组
rhs右操作数数组

引用了 integral_constant< bool, Value >::value.