#include <iostream>
#include <memory>
#include <vector>



int global;

class A {
public:
    A(int i): a(i) {}
    ~A() {
        std::cout << "delete A" << std::endl;
        ++global;
    };
    int foo() {
        return a;
    }
    int a;
};


int main() {

	
 		int c = 0;
 		int loops = 10;
        global = 0;
        
        // Make vector of pointers
        std::vector<std::shared_ptr<A> > vec;
        for(int i = 0; i< 2; i++) {
            vec.push_back( std::shared_ptr<A>(new A(i))    );
        }

        for(int i=0; i<loops; i++) {
            for(auto & p : vec) {
                c += p->foo();
            }
        }
        
        std::cout << " deleted:" << global << std::endl;
	
}