次のコンストラクターを持つ 2 つのテンプレート引数を持つテンプレート クラスがあります。
template <class T, class TCompare>
class MyClass {
...
public:
MyClass(TCompare compare);
...
};
そして、整数比較のために operator () をオーバーロードする構造があります。
struct IntegerLess {
bool operator () {const int& a, const int& b) {
if (a < b)
return true;
return false;
}
};
この構造体を引数として MyClass コンストラクターに渡したいと思います。私は次のことを試しました:
MyClass<int> myClassObject(IntegerLess());
と
MyClass<int, typename IntegerLess> myClassObject(IntegerLess());
ただし、どちらの場合もコンパイル時エラーが発生します。最初のケースでは
error: wrong number of template arguments (1, should be 2)
そして2番目のケースでは
error: template argument 2 is invalid
誰かがここで正しいオプションを指摘できますか? ありがとう!