specializations hash<remove_const_t<A>> and hash<remove_const_t<B>> are
                  
                  
                  both enabled, and disabled otherwise.
                  
                  
                  можно просто кодом написать
                  
                  
                  template<typename A, typename B>
                  
                  
                      requires Hashable<remove_const_t<A>> && Hashable<remove_const_t<B>>
                  
                  
                  struct hash<pair<A, B>>;
                  
                  
                  , где Hashable определен так:
                  
                  
                  template<typename T>
                  
                  
                  concept Hashable = requires(T a) {
                  
                  
                      { hash<T>{}(a) } -> size_t;
                  
                  
                  };
                  
                  
                  ?
                  
                  
                
ну и так позаменять все фразы "Enabled if..."
Обсуждают сегодня