名稱空間
變體
操作

std::is_swappable_with, std::is_swappable, std::is_nothrow_swappable_with, std::is_nothrow_swappable

來自 cppreference.com
< cpp‎ | 型別
 
 
超程式設計庫
型別特性
型別類別
(C++11)
(C++11)(DR*)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11) 
(C++11)
(C++11)
型別屬性
(C++11)
(C++11)
(C++14)
(C++11)(C++26 中已棄用)
(C++11)(直到 C++20*)
(C++11)(C++20 中已棄用)
(C++11)
型別特性常量
元函式
(C++17)
支援的操作
is_swappable_withis_swappableis_nothrow_swappable_withis_nothrow_swappable
(C++17)(C++17)(C++17)(C++17)

關係與屬性查詢
型別修改
(C++11)(C++11)(C++11)
型別轉換
(C++11)(C++23 中已棄用)
(C++11)(C++23 中已棄用)
(C++11)
(C++11)(直到 C++20*)(C++17)

(C++11)
(C++17)
編譯時有理數算術
編譯時整數序列
 
定義於標頭檔案 <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 起)
1) 如果表示式 swap(std::declval<T>(), std::declval<U>())swap(std::declval<U>(), std::declval<T>())using std::swap; 之後(參見 Swappable)在未求值上下文中均格式良好,則提供成員常量 value 等於 true。否則,valuefalse
訪問檢查 執行時如同來自與兩種型別均無關的上下文。
3)(1) 相同,但 (1) 中兩個表示式的求值已知不丟擲異常。
 型別特徵  成員常量 value 的值
T可引用型別  T 不是可引用型別 
(2) std::is_swappable_with<T&, T&>::value false
(4) std::is_nothrow_swappable_with<T&, T&>::value

如果 TU 不是完整型別、(可能帶 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 起)

繼承自 std::integral_constant

成員常量

value
[靜態]
如果 T 可以與 U 交換,則為 true,否則為 false
(public static 成員常量)

成員函式

operator bool
將物件轉換為 bool,返回 value
(公開成員函式)
operator()
(C++14)
返回 value
(公開成員函式)

成員型別

型別 定義
value_type bool
型別 std::integral_constant<bool, value>

[編輯] 註解

此特性不檢查交換表示式的直接上下文之外的任何內容:如果 TU 的使用會觸發模板特化、隱式定義特殊成員函式的生成等,並且這些存在錯誤,即使 std::is_swappable_with<T, U>::value 編譯並評估為 true,實際的交換也可能無法編譯。

[編輯] 示例

[編輯] 另請參閱

交換兩個物件的值
(函式模板) [編輯]
檢查型別是否有移動賦值運算子
(類模板) [編輯]
指定型別可以被交換,或者兩種型別可以互相交換
(概念) [編輯]