#include <iostream>
using namespace std;
#include <set>
template <class V, class T>
class Class
{
public:
typedef std::set<const Class<V, T>* > instances_list;
explicit Class(const V& Value):m_value(Value)
{
s_instances.insert(this);
}
private:
static instances_list s_instances;
V m_value;
};
template <typename V, typename T>
typename Class<V,T>::instances_list Class<V,T>::s_instances;
class Something : public Class<int, Something>
{
public:
static const Something SOMETHING_CONSTANT;
private:
explicit Something(int value): Class<int, Something>(value)
{}
};
const Something Something::SOMETHING_CONSTANT (1);
int main() {
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2luY2x1ZGUgPHNldD4KCnRlbXBsYXRlIDxjbGFzcyBWLCBjbGFzcyBUPgpjbGFzcyBDbGFzcwp7CnB1YmxpYzoKICAgIHR5cGVkZWYgc3RkOjpzZXQ8Y29uc3QgQ2xhc3M8ViwgVD4qID4gaW5zdGFuY2VzX2xpc3Q7CgogICAgZXhwbGljaXQgQ2xhc3MoY29uc3QgViYgVmFsdWUpOm1fdmFsdWUoVmFsdWUpCiAgICB7CglzX2luc3RhbmNlcy5pbnNlcnQodGhpcyk7CiAgICB9CnByaXZhdGU6CiAgICBzdGF0aWMgaW5zdGFuY2VzX2xpc3Qgc19pbnN0YW5jZXM7CiAgICBWIG1fdmFsdWU7Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgViwgdHlwZW5hbWUgVD4KdHlwZW5hbWUgQ2xhc3M8VixUPjo6aW5zdGFuY2VzX2xpc3QgQ2xhc3M8VixUPjo6c19pbnN0YW5jZXM7CgpjbGFzcyBTb21ldGhpbmcgOiBwdWJsaWMgQ2xhc3M8aW50LCBTb21ldGhpbmc+CnsKcHVibGljOgogICAgc3RhdGljIGNvbnN0IFNvbWV0aGluZyBTT01FVEhJTkdfQ09OU1RBTlQ7Cgpwcml2YXRlOgogICAgZXhwbGljaXQgU29tZXRoaW5nKGludCB2YWx1ZSk6IENsYXNzPGludCwgU29tZXRoaW5nPih2YWx1ZSkKICAgIHt9Cn07Cgpjb25zdCBTb21ldGhpbmcgU29tZXRoaW5nOjpTT01FVEhJTkdfQ09OU1RBTlQgKDEpOwoKCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJcmV0dXJuIDA7Cn0=