在线文档教程
C++
应用 | Utilities

std::is_swappable

STD::是[医]可互换[医]With,STD::is[医]可交换的,std::is[医]无抛[医]可互换[医]With,STD::is[医]无抛[医]可互换

Defined in header
template< class T, class U > struct is_swappable_with;(1)(since C++17)
template< class T > struct is_swappable;(2)(since C++17)
template< class T, class U > struct is_nothrow_swappable_with;(3)(since C++17)
template< class T > struct is_nothrow_swappable;(4)(since C++17)

1%29如swap(std::declval<T>(),std::declval<U>())和swap(std::declval<U>(),std::declval<T>())之后的未评估上下文中都有良好的格式。usingstd::swap;28%见Swappable%29,提供成员常量。value平等true.否则,value是false...存取检查执行时,就好像是从与任何类型无关的上下文中执行的。

2%29T不是可引用的类型%28i。E.,可能是cv-符合条件的void类的函数类型。简历-限定符-seq或者是参-限定符%29,提供成员常量。value等于false否则,提供成员常量。value等于std::is_swappable_with<T&, T&>::value

3%29与%281%29相同,但对%281%29的两个表达式的计算都不引发异常。

4%29与%282%29相同,但使用is_nothrow_swappable_with...

TU每一个都是一个完整的类型,%28可能是cv-合格%29void,或者一系列未知的界限。否则,行为就没有定义。

辅助变量模板

template inline constexpr bool is_swappable_with_v = is_swappable_with::value;(since C++17)
template <class T> inline constexpr bool is_swappable_v = is_swappable<T>::value;(since C++17)
template <class T, class U> inline constexpr bool is_nothrow_swappable_with_v = is_nothrow_swappable_with<T, U>::value;(since C++17)
template <class T> inline constexpr bool is_nothrow_swappable_v = is_nothrow_swappable<T>::value;(since C++17)

继承自STD:积分[医]常量

成员常数

value statictrue if T is swappable with U , false otherwise (public static member constant)

成员函数

operator boolconverts the object to bool, returns value (public member function)
operator() (C++14)returns value (public member function)

成员类型

TypeDefinition
value_typebool
typestd::integral_constant<bool, value>

注记

此特性不检查交换表达式的直接上下文之外的任何内容:如果使用T或U将触发模板的专门化,生成隐式定义的特殊成员函数等,并且这些函数都有错误,即使在以下情况下,实际的交换可能也不会编译。std::is_swappable_with<T,U>::value编译并计算为true...

另见

swapswaps the values of two objects (function template)
is_move_assignableis_trivially_move_assignableis_nothrow_move_assignable (C++11)(C++11)(C++11)checks if a type has a move assignment operator (class template)

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/type/is[医]可互换