#include <iostream>
 
using namespace std;
 
class Sample
{
protected:
    int * data;
 
public:
    Sample() = delete;
    Sample( size_t d ) 
    : data( new int[ d ] ) {
        cout << "Sample()" << endl;
    }
    ~Sample() { 
        delete [] data; 
        cout << "~Sample()" << endl;
    }
};
 
class SampleSet
{
protected:
    Sample* samples;
    size_t numOfSamples;
public:
    SampleSet() = delete;
    SampleSet( size_t n, size_t d ) 
    : samples( (Sample*)operator new( sizeof(Sample)*n ) ),
      numOfSamples(n) {
        for( ; n; --n ) new (samples+n-1) Sample( d );
    }
    ~SampleSet() {
        for( ; numOfSamples; --numOfSamples ) 
            (samples+numOfSamples-1)->~Sample();
        operator delete( samples );
    }
};
 
int main() {
   SampleSet ss( 10, 100 );
    
}