20.8.5§1によるstd::less
と、メンバー関数を持つクラステンプレートです。
template<typename T>
struct less
{
bool operator()(const T& x, const T& y) const;
// ...
};
つまり、たとえば、テンプレートをインスタンス化するときにタイプについて言及する必要がありますstd::less<int>
。std::less
代わりにメンバー関数テンプレートを持つ通常のクラスではないのはなぜですか?
struct less
{
template<typename T, typename U>
bool operator()(const T& x, const U& y) const;
// ...
};
std::less
次に、type引数を使用せずにアルゴリズムに渡すだけで、問題が発生する可能性があります。
初期のコンパイラは(おそらく)メンバー関数テンプレートを十分に(またはまったく)サポートしていなかったため、これは歴史的な理由によるものですか、それとももっと深いものがありますか?