#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;
    }
}
