std::experimental::ranges:: CommonReference
|
template
<
class
T,
class
U
>
concept
bool
CommonReference
=
|
(ranges 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是保等表达式。
换句话说,转换为公共引用类型不得改变原始表达式的等值保持特性。
等值保持性
表达式若在给定相等输入时产生相等输出,则称其具有 等值保持性 。
- 表达式的输入由其操作数构成。
- 表达式的输出由其结果及所有被该表达式修改的操作数(如有)构成。
每个要求保持相等性的表达式还必须满足 稳定性 要求:对此类表达式进行两次求值时,若输入对象相同且期间未显式修改这些输入对象,则必须产生相等的输出结果。
参见
|
确定一组类型的公共引用类型
(类模板) |
|
|
指定两种类型共享一个公共类型
(概念) |
|
|
确定一组类型的公共类型
(类模板) |