Namespaces
Variants

std::experimental::ranges:: Common

From cppreference.net
ヘッダーで定義 <experimental/ranges/concepts>
template < class T, class U >

concept bool Common =
Same < ranges:: common_type_t < T, U > , ranges:: common_type_t < U, T >> &&
ConvertibleTo < T, ranges:: common_type_t < T, U >> &&
ConvertibleTo < U, ranges:: common_type_t < T, U >> &&
CommonReference <
std:: add_lvalue_reference_t < const T > ,
std:: add_lvalue_reference_t < const U >> &&
CommonReference <
std:: add_lvalue_reference_t < ranges:: common_type_t < T, U >> ,
ranges:: common_reference_t <
std:: add_lvalue_reference_t < const T > ,

std:: add_lvalue_reference_t < const U >>> ;
(ranges TS)

Common<T, U> コンセプトは、2つの型 T U 共通型 ranges::common_type_t によって計算される)を共有し、 両方がその型に変換可能であることを指定します。

Common<T, U> は、式 t および u が与えられたとき、 decltype ( ( t ) ) T であり、かつ decltype ( ( u ) ) U である場合にのみ満たされる。

言い換えれば、共通型への変換は元の式の等価性保存特性を変更してはなりません。

等価性保存

式が equality preserving であるとは、等しい入力が与えられた場合に等しい出力をもたらすことを意味します。

  • 式への入力は、そのオペランドで構成されます。
  • 式からの出力は、その結果と、式によって変更されたすべてのオペランド(存在する場合)で構成されます。

等価性を保持することが要求されるすべての式は、さらに stable(安定性) が要求されます:同じ入力オブジェクトに対するそのような式の2回の評価は、それらの入力オブジェクトに対する明示的な変更がない限り、等しい出力を持たなければなりません。

関連項目

型の集合の共通型を決定する
(クラステンプレート)
型の集合の共通参照型を決定する
(クラステンプレート)
2つの型が共通の参照型を共有することを指定する
(コンセプト)