25 template <
typename T,
typename Tuple>
28 template <
typename T,
typename... Us>
29 struct has_type<T,
std::tuple<Us...>> : std::disjunction<std::is_same<T, Us>...>
33 template <
typename T,
typename... Us>
41 template<
typename... Ts>
46 template<
typename... Ts>
51 template <
class T,
class Tuple,
size_t... I>
54 return new T(std::get<I>(std::forward<Tuple>(args))...);
58 template<
class T,
class Tuple>
61 return Impl::new_from_tuple<T>(std::forward<Tuple>(args), std::make_index_sequence<std::tuple_size_v<std::remove_reference_t<Tuple>>>{});
T * new_from_tuple(Tuple &&args, std::index_sequence< I... >)
T * new_from_tuple(Tuple &&args)
constexpr bool has_type_v
constexpr bool is_tuple_v