template<typename T, typename ...Us>
concept convertible_to_either = (std::convertible_to<T,Us> || ...);
template<typename T, typename ...Us>
concept convertible_to_all = (std::convertible_to<T,Us> && ...);
template<typename T, typename ...Us>
concept convertible_to_none = (!std::convertible_to<T,Us> && ...);
template<typename T, typename ...Us>
concept same_as_either = (std::same_as<T,Us> || ...);
template<typename T, typename ...Us>
concept same_as_all = (std::same_as<T,Us> && ...);
template<typename T, typename ...Us>
concept same_as_none = (!std::same_as<T,Us> && ...);
template<typename T, typename ...Us>
concept similar_to_either = (std::similar_to<T,Us> || ...);
template<typename T, typename ...Us>
concept similar_to_all = (std::similar_to<T,Us> && ...);
template<typename T, typename ...Us>
concept similar_to_none = (!std::similar_to<T,Us> && ...);
I think it'd be nicer to have something like this at hands.
Would it be considered as niche and bloating the standard library unnecessarily?