#include <iostream>
using namespace std;
template<class T1, class T2>
class AClass { public: void test(){cout<<"AT1T2"<<endl;}};
template<class T>
class AClass<T, T> { public: void test(){cout<<"ATT"<<endl;}}; // specialized class.
AClass<int,float> aClassIntFloat; // works just fine
AClass<int, int> aClassIntInt; // works just fine
//AClass<int> specializedIntClass; //"error: wrong number of template arguments (1, should be 2)"
int main() {
aClassIntFloat.test();
aClassIntInt.test();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPgpjbGFzcyBBQ2xhc3MgIHsgcHVibGljOiB2b2lkIHRlc3QoKXtjb3V0PDwiQVQxVDIiPDxlbmRsO319OwoKdGVtcGxhdGU8Y2xhc3MgVD4KY2xhc3MgQUNsYXNzPFQsIFQ+IHsgcHVibGljOiB2b2lkIHRlc3QoKXtjb3V0PDwiQVRUIjw8ZW5kbDt9fTsgLy8gc3BlY2lhbGl6ZWQgY2xhc3MuCgpBQ2xhc3M8aW50LGZsb2F0PiBhQ2xhc3NJbnRGbG9hdDsgLy8gd29ya3MganVzdCBmaW5lCgpBQ2xhc3M8aW50LCBpbnQ+IGFDbGFzc0ludEludDsgLy8gd29ya3MganVzdCBmaW5lCgovL0FDbGFzczxpbnQ+IHNwZWNpYWxpemVkSW50Q2xhc3M7IC8vImVycm9yOiB3cm9uZyBudW1iZXIgb2YgdGVtcGxhdGUgYXJndW1lbnRzICgxLCBzaG91bGQgYmUgMikiCgoKaW50IG1haW4oKSB7CglhQ2xhc3NJbnRGbG9hdC50ZXN0KCk7IAoJYUNsYXNzSW50SW50LnRlc3QoKTsKCXJldHVybiAwOwp9