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