#include namespace _cow_util { Area::Area(size_t sz) : _area(std::make_unique(sz)){} Area::Area(const Area& copy) : _area(std::make_unique(*copy._area.get())){} Area::Area(Area&& move) : _area(std::move(*const_cast*>(&move._area))){} Area::~Area(){} Area::Area(Cow&& r) : _area(std::make_unique(std::move(r))){} Area::Area(const Cow& r) : _area(std::make_unique(r.clone())){} }