14template <
class TBase,
class TDerived>
17 static constexpr bool Value = std::is_base_of_v<TBase, TDerived> && !std::is_same_v<TBase, TDerived>;
24template <
class T,
class Tuple>
27template <
class T,
class... Types>
28struct TIndexInTuple<T, std::tuple<T, Types...>>
30 static constexpr int Value = 0;
34struct TIndexInTuple<T, std::tuple<>>
36 static constexpr int Value = 0;
39template <
class T,
class U,
class... Types>
40struct TIndexInTuple<T, std::tuple<U, Types...>>
42 static constexpr int Value = 1 + TIndexInTuple<T, std::tuple<Types...>>::Value;
45template <
class T,
class TTuple>
46constexpr bool DoesTupleContainType = (TIndexInTuple<T, TTuple>::Value < std::tuple_size<TTuple>{});
48template <
class TOut,
class TIn = std::tuple<>>
51template <
class... TOut,
class TInCar,
class... TInCdr>
52struct TUniqueTypes<std::tuple<TOut...>, std::tuple<TInCar, TInCdr...>>
54 using TType = std::conditional_t<
55 DoesTupleContainType<TInCar, std::tuple<TOut...>>,
56 typename TUniqueTypes<std::tuple<TOut...>, std::tuple<TInCdr...>>::TType,
57 typename TUniqueTypes<std::tuple<TOut..., TInCar>, std::tuple<TInCdr...>>::TType
62struct TUniqueTypes<TOut, std::tuple<>>
Main namespace of YT client.
Definition abortable_stream.h:7