where T : System.ValueType
Using struct as a generic constraint is functionally equivalent to a "ValueType" constraint. In .NET, a struct is a value type.
struct