#include <iostream>
#include <tr1/memory>
using namespace std;
template <typename T>
class ArrayDeleter
{
public:
void operator () (T* d) const
{
delete [] d;
}
};
int main ()
{
// Usage
std::tr1::shared_ptr<double> d (new double [10], ArrayDeleter<double> ());
std::cout << sizeof(d) << std::endl;
for (size_t n = 0; n < 10; ++n)
{
d.get()[n] = 0.1 * n;
std::cout << d.get()[n] << std::endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHIxL21lbW9yeT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpjbGFzcyBBcnJheURlbGV0ZXIKewpwdWJsaWM6CiAgICB2b2lkIG9wZXJhdG9yICgpIChUKiBkKSBjb25zdAogICAgewogICAgICAgIGRlbGV0ZSBbXSBkOwogICAgfQp9OwoKaW50IG1haW4gKCkKewogICAgLy8gVXNhZ2UKICAgIHN0ZDo6dHIxOjpzaGFyZWRfcHRyPGRvdWJsZT4gZCAobmV3IGRvdWJsZSBbMTBdLCBBcnJheURlbGV0ZXI8ZG91YmxlPiAoKSk7CiAgICBzdGQ6OmNvdXQgPDwgc2l6ZW9mKGQpIDw8IHN0ZDo6ZW5kbDsKICAgIGZvciAoc2l6ZV90IG4gPSAwOyBuIDwgMTA7ICsrbikKICAgIHsKICAgICAgICBkLmdldCgpW25dID0gMC4xICogbjsKICAgICAgICBzdGQ6OmNvdXQgPDwgZC5nZXQoKVtuXSA8PCBzdGQ6OmVuZGw7CiAgICB9Cn0K