#include <iostream>
using namespace std;
class CountedInstances {
public:
static int Counter;
CountedInstances() {
Counter++;
cout << Counter << endl;
}
};
int CountedInstances::Counter = 0;
template<class T> class GenTest {
static CountedInstances OnePerType;
T mT;
public:
GenTest(T pT) {
mT = pT;
(void)&OnePerType;
}
};
template<class T> CountedInstances GenTest<T>::OnePerType = CountedInstances();
int main() {
GenTest<int> g1(1);
GenTest<int> g11(11);
GenTest<int> g111(111);
GenTest<double> g2(1.0);
cout << CountedInstances::Counter << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQ291bnRlZEluc3RhbmNlcyB7CnB1YmxpYzoKICBzdGF0aWMgaW50IENvdW50ZXI7CiAgQ291bnRlZEluc3RhbmNlcygpIHsKICAgIENvdW50ZXIrKzsKICAgIGNvdXQgPDwgQ291bnRlciA8PCBlbmRsOwogIH0KfTsKCmludCBDb3VudGVkSW5zdGFuY2VzOjpDb3VudGVyID0gMDsKCnRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIEdlblRlc3QgewogIHN0YXRpYyBDb3VudGVkSW5zdGFuY2VzIE9uZVBlclR5cGU7CiAgVCBtVDsKcHVibGljOgogIEdlblRlc3QoVCBwVCkgewogICAgbVQgPSBwVDsKICAgICh2b2lkKSZPbmVQZXJUeXBlOwogIH0KfTsKCnRlbXBsYXRlPGNsYXNzIFQ+IENvdW50ZWRJbnN0YW5jZXMgR2VuVGVzdDxUPjo6T25lUGVyVHlwZSA9IENvdW50ZWRJbnN0YW5jZXMoKTsKCmludCBtYWluKCkgewogIEdlblRlc3Q8aW50PiBnMSgxKTsKICBHZW5UZXN0PGludD4gZzExKDExKTsKICBHZW5UZXN0PGludD4gZzExMSgxMTEpOwogIEdlblRlc3Q8ZG91YmxlPiBnMigxLjApOwogIGNvdXQgPDwgQ291bnRlZEluc3RhbmNlczo6Q291bnRlciA8PCBlbmRsOwp9