std::common_with
| ヘッダ <concepts> で定義 |
||
| template< class T, class U > concept common_with = |
(C++20以降) | |
コンセプト common_with<T, U> は、2つの型 T と U が(std::common_type_t によって計算される)共通型 を共有し、両方がその型に変換可能であることを指定します。
目次 |
[編集] 意味論的要件
T と U が std::common_with<T, U> をモデル化するのは、等価性を保持する式 t1, t2, u1, u2 が存在し、decltype((t1)) および decltype((t2)) が両方とも T であり、decltype((u1)) および decltype((u2)) が両方とも U である場合、
- std::common_type_t<T, U>(t1) が std::common_type_t<T, U>(t2) と等しいのは、
t1がt2と等しい場合、かつその場合に限ります。また、 - std::common_type_t<T, U>(u1) が std::common_type_t<T, U>(u2) と等しいのは、
u1がu2と等しい場合、かつその場合に限ります。
言い換えると、共通型への変換は 等価性を保持しなければなりません。
[編集] 等価性保持
標準ライブラリのコンセプトのrequires式で宣言された式は、(特に明記されていない限り)等価性保持である必要があります。
[編集] 参考文献
- C++23標準 (ISO/IEC 14882:2024)
- 18.4.6 Concept
common_with[concept.common]
- 18.4.6 Concept
- C++20 standard (ISO/IEC 14882:2020)
- 18.4.6 Concept
common_with[concept.common]
- 18.4.6 Concept
[編集] 関連項目
| (C++11) |
型のグループの共通の型を決定する (クラステンプレート) |
| 型のグループの共通の参照型を決定する (クラステンプレート) | |
| (C++20) |
2つの型が共通の参照型を共有することを規定する (コンセプト) |