最終更新日時: 2026年02月08日 18時00分28秒 (JST)
yoh が更新

履歴 編集

concept
<tuple>

# std::tuple-like(C++23)

    namespace std {
      template <typename T>
      concept tuple-like = see below; // 説明専用コンセプト
    }

## 概要

`tuple-like`は型`T`が`tuple`のような型であることを表現する説明専用コンセプトである。なお、`pair`のような型を表現する`pair-like`も存在する。

`array`、`pair`、`tuple`、`ranges::subrange`らの互換性を高める（相互に構築・比較などが出来るようにする）ためなどに使用される。

## 要件

`std::remove_cvref_t<T>`が次の特殊化であること。

- `array`
- `pair`
- `tuple`
- `ranges::subrange`

## 備考

将来的に`std::get()`やそれに近しいカスタマイゼーションポイントオブジェクト（CPO）が定義されれば、`tuple-like`のモデルになる型は広がる可能性があるとされている。

## バージョン

### 言語

- C++23

### 処理系

- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??

## 関連項目

- `pair-like`

## 参照

- P2165R4 Compatibility between `tuple`, `pair` and tuple-like objects