Boost logo

Boost :

From: Howard Hinnant (hinnant_at_[hidden])
Date: 2005-04-26 12:15:41


On Apr 26, 2005, at 11:37 AM, Peter Dimov wrote:

> ConstPropagation policy (with the default being No for shallow copy
> and Yes for deep copy).

I've been toying with a smart pointer adaptor for this one. I really
haven't fully fleshed out the thinking on it though...

template <class SP>
class deep_const
{
public:
        typedef SP pointer;
private:
        pointer sp_;

        typedef decltype(*pointer()) reference;
public:
        deep_const() {}
        deep_const(const pointer& p) : sp_(p) {}
        deep_const(pointer&& p) : sp_(std::move(p)) {}
        deep_const(const deep_const& p) : sp_(p.sp_) {}
        deep_const(deep_const&& p) : sp_(std::move(p.sp_)) {}
        deep_const& operator=(const deep_const& p) {sp_ = p.sp_; return *this;}
        deep_const& operator=(deep_const&& p) {sp_ = std::move(p.sp_); return
*this;}

              reference operator*() {return *sp_;}
        const reference operator*() const {return *sp_;}

        //...
};

deep_const<shared_ptr<std::string> > sp;

-Howard


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk