General restrictions are not accepted as part of overload compliance. This is the same as the return type.
For example, this will lead to the same error (overloads differ only in return type):
public static int Do<T>(T obj) { } public static bool Do<T>(T obj) { }
In both cases, overload negotiation rules only consider parameter types, ignoring additional information such as restrictions and return type.
Elisha
source share