次のように、コンストラクターで指定されたファンクターを基本的に格納する必要があるクラスがあります。
template <class T>
class Foo {
private:
T func;
public:
Foo(T f) : func(f) { }
}
ただし、Foo クラスの新しいインスタンスを作成するには、これを行うことができないようです。
Foo foo(std::less<int>());
T はクラス テンプレート パラメータであるためです。代わりに、この不格好な構文を使用する必要があります。
Foo<std::less<int>> foo(std::less<int>());
ファンクターの型を 2 回書かずに、これを行うより良い方法はありますか?