関数のオーバーロードのようなものです。たとえば、次のようにしても問題ありません。
void foo(int i) {
;
}
// Function overload ftw.
void foo(int i, int j) {
;
}
しかし、これを行うのは (まだ) OK ではありません:
template<typename T>
class Foo {
};
// Fail!
template<typename T1, typename T2>
class Foo {
};
単に混乱を避けるために、この機能は存在しませんか? それとも、これが実際には意味をなさない何らかの理由がありますか?