Привет всем!
Обнаружилось, что вот такой код
public class Test1[Q]
where Q : struct
{
public mutable q : Q?;
}
не компилируется с ошибкой
typing constraint on T not satisfied, upon instantiation of System.Nullable: System.Object is not a subtype of System.ValueType [simple require]
А вот такой компилируется, хотя инстанцировать это шаблон невозможно
public class A {}
public class B {}
public class Test[P]
where P : A, B
{
public mutable t_ : P;
}
Первое, понятно, баг. А про второе не уверен — рефлектор, например, радостно показывает ограничение where P : A, B. Ildasm тоже. То есть .NET такое позволяет, но в чём смысл неясно.