テンプレート技術で存在する可能性のあるメンバー関数を呼び出すにはどうすればよいですか? クラスが任意であるため、仮想メソッドを使用したくありません。
例えば:
class A {
void setValue(int value);
};
A
classの setValue が存在する場合はそれを呼び出し、それ以外の場合は何もしないようにテンプレートを定義する方法。
テンプレートは次のようなものです。
template <typename T>
struct call_if_exist {
void invokeOrNot(T& a, int value){ // EXISTING: setValue
a.setValue(value);
}
}
template <typename T>
struct call_if_exist {
void invokeOrNot(T& a, int value){ // NOT EXISTING: do nothing
}
}
チェックではなく、呼び出すことです。