Wouldn't it be nicer if c++ <concepts> have all binary and negate concepts in folding disjuction and conjunction form where applicable?

Viewed 109
    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?

0 Answers
Related