std::experimental::ranges::CommonReference
来自 cppreference.cn
< cpp | experimental | ranges
template< class T, class U > concept bool CommonReference = |
(ranges TS) | |
概念 CommonReference<T, U>
规定了两种类型 T
和 U
共享一个共同引用类型 (由 ranges::common_reference_t 计算得出),它们都可以转换为该类型。
只有当给定表达式 t
和 u
,使得 decltype((t)) 为 T
且 decltype((u)) 为 U
时,CommonReference<T, 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
是一个保等表达式。
换句话说,转换为共同引用类型不得改变原始表达式的保等属性。
[编辑] 保等性
如果一个表达式在给定相等输入时产生相等输出,则该表达式是保等的。
- 表达式的输入由其操作数组成。
- 表达式的输出由其结果和表达式修改的所有操作数(如果有)组成。
每个需要保等的表达式都进一步要求是稳定的:在没有任何显式干预修改这些输入对象的情况下,使用相同的输入对象对这样的表达式进行两次求值必须具有相等的输出。
[编辑] 参见
确定一组类型的共同引用类型 (类模板) | |
规定两种类型共享一个共同类型 (概念) | |
确定一组类型的共同类型 (类模板) |