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