std::experimental::ranges::Common
定義於標頭檔案 <experimental/ranges/concepts> |
||
template< class T, class U > concept bool Common = |
(ranges TS) | |
概念 Common<T, U>
指定了兩個型別 T
和 U
共享一個共同型別(由 ranges::common_type_t 計算),並且兩者都可以轉換為該共同型別。
Common<T, U>
僅當給定表示式 t
和 u
滿足 decltype((t)) 是 T
且 decltype((u)) 是 U
時才滿足:
- ranges::common_type_t<T, U>(t) 等於 ranges::common_type_t<T, U>(t) 當且僅當
t
是一個保持相等性的表示式;並且 - ranges::common_type_t<T, U>(u) 等於 ranges::common_type_t<T, U>(u) 當且僅當
u
是一個保持相等性的表示式。
換句話說,轉換為共同型別不應改變原始表示式的相等性保持屬性。
[編輯] 相等性保持
如果一個表示式在給定相等輸入時產生相等輸出,則稱其為保持相等性。
- 表示式的輸入由其運算元組成。
- 表示式的輸出由其結果以及被表示式修改的所有運算元(如果有的話)組成。
所有要求保持相等性的表示式還必須是穩定的:在沒有顯式介入修改輸入物件的情況下,對具有相同輸入物件的表示式的兩次求值必須產生相等的輸出。
[編輯] 參閱
確定一組型別的公共型別 (類模板) | |
確定一組型別的公共引用型別 (類模板) | |
指定兩種型別共享一個共同的引用型別 (概念) |