Restrict the number of object instantiations from a class to a given number
Given a class, I would like to limit the number of objects created from this class to a given number, say 4. Is there a method to achieve this? The basic idea is to count the number of created instances in some static variable. I would implement it like this. Simpler approaches exist, but this one has some advantages. template<class T, int maxInstances> class Counter { protected: Counter() { if( ++noInstances() > maxInstances ) { throw logic_error( "Cannot create another instance" ); } } int& noInstances() { static int noInstances = 0; return noInstances; } /* this can be uncommented to