コンテンツにスキップ

yu::tuples::known_tuple

namespace yu::tuples {
    template <typename T>
    inline constexpr bool known_tuple = false;                                  // (1)

    template <typename T, std::size_t N>
    inline constexpr bool known_tuple<T [N]> = true;                            // (2)

    template <typename... Ts>
    inline constexpr bool known_tuple<std::tuple<Ts...>> = true;                // (3)

    template <typename T, std::size_t N>
    inline constexpr bool known_tuple<std::array<T, N>> = true;                 // (4)

    template <typename T1, typename T2>
    inline constexpr bool known_tuple<std::pair<T1, T2>> = true;                // (5)

    template <typename I, typename S, std::ranges::subrange_kind K>
    inline constexpr bool known_tuple<std::ranges::subrange<I, S, K>> = true;   //(6)
}

概要

yu::tuples::tupleコンセプトの評価の動作をカスタマイズする変数テンプレート. known_tuple<T>trueとなる型Tに対して,yu::tuples::tupleコンセプトは評価を短絡する.

  • (1): Tに対してknown_tuple<T>が特殊化されていないとき,デフォルトではカスタマイズされない.
  • (2): 要素数の判明している配列型に対してカスタマイズするための部分特殊化.
  • (3)-(6): C++23でtuple-likeだと規定されている型に対してカスタマイズするための部分特殊化

yu::tuples::tupleのモデルでない型に対する特殊化によってカスタマイズしたとき,プログラムの動作は保障されない.