В этой статье описан способ добавления в C # произвольных типов значений, для которых для них определен оператор +. По сути это позволяет следующий код:
public T Add(T val1, T val2)
{
return val1 + val2;
}
Этот код не компилируется, поскольку нет гарантии, что тип T имеет определение для оператора '+', но эффект достигается с помощью кода, подобного следующему:
public T Add(T val1, T val2)
{
//Num<T> defines a '+' operation which returns a value of type T
return (new Num<T>(val1) + new Num<T>(val2));
}
Перейдите по ссылке, чтобы увидеть, как класс Num достигает этого. В любом случае, к вопросу. Есть ли способ достичь того же эффекта в C или C ++? Для любопытных проблема, которую я пытаюсь решить, состоит в том, чтобы позволить ядру CUDA быть более гибким / общим, позволяя ему работать с большим количеством типов.
Обновление: Для .NET Марк Гравелл создал служебную библиотеку , которая очень элегантно решает проблему оператора.