It is written in many places (for example here), that specialisations of types from namespace std are only allowed if the specialisation "depends on user-defined types". Does this definition in the standard explicitly exclude to specialise std types based on user-defined concepts?
For example, is this allowed?
namespace std {
template<MyConcept T>
struct hash<T> {
size_t hash(T const& v) const { ... }
};
}
This would greatly simplify many specialisations in my code where I have a lot of different but similar classes adhering to the same concept which can be hashed all in the same way.