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