次のように定義された明示的な(つまり、推定されていない)テンプレートパラメータを持つ関数オブジェクトがあります。
struct foo
{
template<class T>
T operator()() const
{
return 5;
}
};
foo bar = {};
私がそれをこのように呼ぼうとすると:
int main()
{
int i = bar<int>();
return 0;
}
コンパイルエラーが発生します。通常の関数のようにテンプレートパラメータを使用して関数オブジェクトを呼び出す方法はありませんか?私は本当にそれを関数オブジェクトとして持つ必要があります。無料の関数を作成することは、私にとって実際にはオプションではありません(または、少なくとも、それは非常に厄介なオプションです)。