std::experimental::ranges::CommonReference
来自 cppreference.com
< cpp | experimental | ranges
定义在头文件 <experimental/ranges/concepts> 中 |
||
template< class T, class U > concept bool CommonReference = |
(范围 TS) | |
概念 CommonReference<T, U>
指定两种类型 T
和 U
共享一个通用引用类型(由 ranges::common_reference_t 计算),两种类型都可以转换为该类型。
CommonReference<T, U>
仅在以下情况下满足:给定表达式 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
是一个保持等价性的表达式。
换句话说,转换为通用引用类型不能改变原始表达式的保持等价性属性。
[编辑] 保持等价性
如果表达式在给定相等输入的情况下产生相等输出,则该表达式保持等价性。
- 表达式的输入包括其操作数。
- 表达式的输出包括其结果以及表达式修改的所有操作数(如果有)。
每个需要保持等价性的表达式还需要稳定:对这样的表达式进行两次求值,使用相同的输入对象,必须具有相等的输出,除非对这些输入对象进行显式修改。
[编辑] 另请参阅
确定一组类型的通用引用类型 (类模板) | |
指定两种类型共享一个通用类型 (概念) | |
确定一组类型的通用类型 (类模板) |