この記事では、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 については、Marc Gravell が、演算子の問題を非常にエレガントに解決するユーティリティ ライブラリを作成しました。