定义于头文件
<type_traits>
|
||
template< class T, class U >
struct is_swappable_with; |
(1) | (C++17 起) |
template< class T >
struct is_swappable; |
(2) | (C++17 起) |
template< class T, class U >
struct is_nothrow_swappable_with; |
(3) | (C++17 起) |
template< class T >
struct is_nothrow_swappable; |
(4) | (C++17 起) |
Swappable
) )后,在不求值语境中均为良态,则给出等于 true 的成员常量 value
。否则 value
为 false 。若来自与两类型均不相关的语境,则进行访问检查。 T
不是可解引用类型(即可为 cv 限定的 void 或拥有 cv-qualifier-seq 或 ref-qualifier 的函数类型),则提供等于 false 的成员常量 value
。否则,提供等于 std::is_swappable_with<T&, T&>::value 的成员常量 value
。T
及 U
应均为完整类型、(可为 cv 限定的) void ,或未知边界数组。否则行为未定义。
目录 |
template <class T, class U>
inline constexpr bool is_swappable_with_v = is_swappable_with<T, U>::value; |
(C++17 起) | |
template <class T>
inline constexpr bool is_swappable_v = is_swappable<T>::value; |
(C++17 起) | |
template <class T, class U>
inline constexpr bool is_nothrow_swappable_with_v = is_nothrow_swappable_with<T, U>::value; |
(C++17 起) | |
template <class T>
inline constexpr bool is_nothrow_swappable_v = is_nothrow_swappable<T>::value; |
(C++17 起) | |
value
[静态]
|
若T 可与U 交换则为 true ,否则为 false (公开静态成员常量) |
operator bool
|
转换对象为 bool ,返回 value (公开成员函数) |
operator()
(C++14)
|
返回 value (公开成员函数) |
类型 | 定义 |
value_type
|
bool
|
type
|
std::integral_constant<bool, value> |
此特性不检查任何 swap 的立即语境之外的事物:若 T
或 U
的使用会触发模板特化,隐式定义的特定成员函数的生成等,且它们拥有错误,则即使 std::is_swappable_with<T,U>::value
通过编译且求值为 true
,实际交换也可能无法编译。
本节未完成 原因:暂无示例 |
交换两个对象的值 (函数模板) |
|
(C++11)
(C++11) (C++11) |
检查类型是否有拥有移动赋值运算符 (类模板) |