私はboost::lambdaを、任意のクラスの任意の「getter」メソッドで機能する汎用アルゴリズムを作成する方法として見ています。
このアルゴリズムは、プロパティの重複値を検出するために使用されます。どのクラスのどのプロパティでも機能するようにしたいと思います。
C#では、次のようにします。
class Dummy
{
public String GetId() ...
public String GetName() ...
}
IEnumerable<String> FindNonUniqueValues<ClassT>
(Func<ClassT,String> propertyGetter) { ... }
メソッドの使用例:
var duplicateIds = FindNonUniqueValues<Dummy>(d => d.GetId());
var duplicateNames = FindNonUniqueValues<Dummy>(d => d.GetName());
インターフェイスまたはテンプレートメソッドのいずれかを使用して、for "any class"部分を機能させることができますが、 "foranymethod"部分を機能させる方法はまだ見つかりません。
C++で「d=>d.GetId()」ラムダに似た何かを行う方法はありますか(Boostの有無にかかわらず)?
アルゴリズムをジェネリックにするための代替のより多くのC++ianソリューションも歓迎されます。
VS2008でC++/ CLIを使用しているため、C++0xラムダを使用できません。