名稱空間
變體
操作

std::experimental::ranges::is_swappable_with, std::experimental::ranges::is_swappable, std::experimental::ranges::is_nothrow_swappable_with, std::experimental::ranges::is_nothrow_swappable

來自 cppreference.com
< cpp‎ | 實驗性‎ | ranges
 
 
實驗性
技術規範
檔案系統庫 (檔案系統 TS)
庫基礎 (庫基礎 TS)
庫基礎 2 (庫基礎 TS v2)
庫基礎 3 (庫基礎 TS v3)
並行性擴充套件 (並行性 TS)
並行性擴充套件 2 (並行性 TS v2)
併發性擴充套件 (併發性 TS)
併發擴充套件 2 (併發 TS v2)
概念 (概念 TS)
範圍 (範圍 TS)
反射 (反射 TS)
數學特殊函式 (特殊函式 TR)
實驗性非 TS
模式匹配
線性代數
std::execution
契約
2D 圖形
 
 
通用工具庫
實用元件
函式物件
超程式設計和型別特徵
is_swappable_withis_swappable
is_nothrow_swappable_withis_nothrow_swappable
帶標籤的對和元組
                          
tag specifiers
                                      
                          
 
定義於標頭檔案 <experimental/ranges/type_traits>
template< class T, class U >
struct is_swappable_with;
(1) (ranges TS)
template< class T >
struct is_swappable;
(2) (ranges TS)
template< class T, class U >
struct is_nothrow_swappable_with;
(3) (ranges TS)
template< class T >
struct is_nothrow_swappable;
(4) (ranges TS)
1) 如果表示式 ranges::swap(std::declval<T>(), std::declval<U>())ranges::swap(std::declval<U>(), std::declval<T>()) 在被視為未求值運算元時都格式良好,則提供成員常量 value 等於 true。否則,valuefalse訪問檢查的執行就好像是在與這兩種型別都無關的上下文中進行的。
2) 如果 T 不是可引用型別(即可能是 cv 限定的 void 或帶有 cv 限定符序列引用限定符 的函式型別),則提供成員常量 value 等於 false。否則,提供成員常量 value 等於 ranges::is_swappable_with<T&, T&>::value
3)(1) 相同,但是已知 (1) 中的兩個表示式的求值不會丟擲異常。
4)(2) 相同,但是使用 is_nothrow_swappable_with

TU 均應為完整型別、(可能是 cv 限定的)void,或未知邊界的陣列。否則,行為是未定義的。

目錄

[編輯] 輔助變數模板

template< class T, class U >
constexpr bool is_swappable_with_v = is_swappable_with<T, U>::value;
(1) (ranges TS)
template< class T >
constexpr bool is_swappable_v = is_swappable<T>::value;
(2) (ranges TS)
template< class T, class U >
constexpr bool is_nothrow_swappable_with_v = is_nothrow_swappable_with<T, U>::value;
(3) (ranges TS)
template< class T >
constexpr bool is_nothrow_swappable_v = is_nothrow_swappable<T>::value;
(4) (ranges TS)

繼承自 std::integral_constant

成員常量

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

成員函式

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

成員型別

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

[編輯] 注意

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

[編輯] 示例

[編輯] 參閱

指定型別可以被交換,或者兩種型別可以互相交換
(概念) [編輯]
檢查一種型別的物件是否可以與相同或不同型別的物件進行交換
(類模板) [編輯]