std::experimental::ranges::CommonReference
来自 cppreference.cn
< cpp | experimental | ranges
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 不得改变原始表达式的相等性保持属性。
[编辑] 相等性保持
如果一个表达式在给定相等输入时产生相等输出,则称其为保持相等性。
- 表达式的输入由其操作数组成。
- 表达式的输出由其结果以及被表达式修改的所有操作数(如果有的话)组成。
所有要求保持相等性的表达式还必须是稳定的:在没有显式介入修改输入对象的情况下,对具有相同输入对象的表达式的两次求值必须产生相等的输出。
[编辑] 参阅
确定一组类型的公共引用类型 (类模板) | |
指定两种类型共享一个共同的类型 (概念) | |
确定一组类型的公共类型 (类模板) |