1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
   |  
struct some_class
{
   some_class() : data(0),sz(0) {}
 
   ~some_class() { if(data) delete[] data; }
 
   some_class( some_class const& src) : sz(src.size())
  {
      data = new double[sz];
      std::copy(data,data+sz,src.begin());
  }
 
  void swap( some_class& src )
  {
     std::swap(sz,src.sz);
     std::swap(data,src.data);
  }
 
  some_class& operator=( some_class src )
  {
      swap(src);
      return *this;
   }
 
  std::size_t size() const { return sz; }
  double* begin() {  return data; }
  double const* begin() const {  return data; }
 
 
  private:
  double* data;
  std::size_t sz;
}; |