#include <iostream>
using namespace std;
using namespace std;
struct base
{
static int tCount;
};
int base::tCount = 0;
template <class T>
class Test : public base
{
private:
T val;
public:
static int count;
Test()
{
count++;
tCount++;
}
// some other stuff in class
};
template<class T>
int Test<T>::count = 0;
int main()
{
Test<int> a; // value of count for Test<int> is 1 now
Test<int> b;
Test<int> i;// value of count for Test<int> is 2 now
Test<double> c; // value of count for Test<double> is 1 now
Test<char> d;
Test<float> e;
cout << Test<int>::count << endl; // prints 2
cout << Test<double>::count << endl; //prints 1
cout << base::tCount <<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IGJhc2UKewoJc3RhdGljIGludCB0Q291bnQ7CQp9OwppbnQgYmFzZTo6dENvdW50ID0gMDsgIAp0ZW1wbGF0ZSA8Y2xhc3MgVD4gCmNsYXNzIFRlc3QgOiBwdWJsaWMgYmFzZQp7ICAKcHJpdmF0ZToKICBUIHZhbDsgCnB1YmxpYzoKICBzdGF0aWMgaW50IGNvdW50OwogIFRlc3QoKQogIHsKICAgIGNvdW50Kys7CiAgICB0Q291bnQrKzsKICB9CiAgLy8gc29tZSBvdGhlciBzdHVmZiBpbiBjbGFzcwp9OwogIAp0ZW1wbGF0ZTxjbGFzcyBUPgppbnQgVGVzdDxUPjo6Y291bnQgPSAwOwogIAppbnQgbWFpbigpCnsKICBUZXN0PGludD4gYTsgIC8vIHZhbHVlIG9mIGNvdW50IGZvciBUZXN0PGludD4gaXMgMSBub3cKICBUZXN0PGludD4gYjsgCiAgVGVzdDxpbnQ+IGk7Ly8gdmFsdWUgb2YgY291bnQgZm9yIFRlc3Q8aW50PiBpcyAyIG5vdwogIFRlc3Q8ZG91YmxlPiBjOyAgLy8gdmFsdWUgb2YgY291bnQgZm9yIFRlc3Q8ZG91YmxlPiBpcyAxIG5vdwogIFRlc3Q8Y2hhcj4gZDsKICBUZXN0PGZsb2F0PiBlOwogIGNvdXQgPDwgVGVzdDxpbnQ+Ojpjb3VudCAgIDw8IGVuZGw7ICAvLyBwcmludHMgMiAgCiAgY291dCA8PCBUZXN0PGRvdWJsZT46OmNvdW50IDw8IGVuZGw7IC8vcHJpbnRzIDEKICBjb3V0IDw8IGJhc2U6OnRDb3VudCA8PGVuZGw7CiAgICAgCiAgcmV0dXJuIDA7Cn0=