При объявлении бинарного оператора, по крайней мере один из типов операндов должен быть содержащим типом. В целом это звучит как хорошее дизайнерское решение. Однако я не ожидал, что следующий код вызовет эту ошибку:
public class Exp<T>
{
public static Exp<int> operator +(Exp<int> first, Exp<int> second)
{
return null;
}
}
В чем проблема с этим оператором? Почему этот случай попадает в ограничения перегрузки операторов c #? Опасно ли разрешать такого рода декларации?