std::experimental::ranges::CommonReference
From cppreference.com
< cpp | experimental | ranges
| Defined in header <experimental/ranges/concepts> |
||
| template< class T, class U > concept bool CommonReference = |
(ranges TS) | |
コンセプトCommonReference<T, U>は、2つの型TとUが、両方とも変換可能な共通参照型(ranges::common_reference_tによって計算される)を共有することを指定します。
CommonReference<T, U>は、decltype((t))がTであり、decltype((u))がUであるような式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が等価性保持式である場合、かつその場合に限ります。
言い換えれば、共通参照型への変換は、元の式の等価性保持プロパティを変更してはなりません。
[編集] 等価性保持
式が**等価性保持**であるとは、等しい入力に対して等しい出力を生成することを意味します。
- 式の入力は、そのオペランドで構成されます。
- 式の出力は、その結果と、式によって変更されたすべてのオペランド(存在する場合)で構成されます。
等価性保持が要求されるすべての式は、さらに**安定**である必要があります。同じ入力オブジェクトでそのような式の2回の評価は、これらの入力オブジェクトの明示的な介入的な変更がない限り、等しい出力を持ちます。
[編集] 関連項目
| 型の共通参照型を決定します。 (class template) | |
| 2つの型が共通の型を共有することを規定する (concept) | |
| 型の共通型を決定します。 (class template) |