From 150206f38c1e42e3b56634d899f0267bfd633a6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E6=99=93=E8=88=AA?= <1210603696@qq.com> Date: Mon, 16 Mar 2015 15:35:17 +0800 Subject: [PATCH] bug fix --- TinySTL/Memory.h | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/TinySTL/Memory.h b/TinySTL/Memory.h index cf2da31..12d2f61 100644 --- a/TinySTL/Memory.h +++ b/TinySTL/Memory.h @@ -45,7 +45,8 @@ namespace TinySTL{ ~unique_ptr(){ clean(); } - pointer get()const{ return data_; } + const pointer get()const{ return data_; } + pointer get(){ return data_; } deleter_type& get_deleter(){ return deleter; } const deleter_type& get_deleter()const{ return deleter; } @@ -62,8 +63,10 @@ namespace TinySTL{ } void swap(unique_ptr& up){ TinySTL::swap(data_, up.data_); } - element_type operator *()const{ return *data_; } - pointer operator ->()const{ return data_; } + const element_type& operator *()const{ return *data_; } + const pointer operator ->()const{ return data_; } + element_type& operator *(){ return *data_; } + pointer operator ->(){ return data_; } private: inline void clean(){ deleter(data_); @@ -133,10 +136,13 @@ namespace TinySTL{ ~shared_ptr(){ decrease_ref(); } - element_type operator *()const{ return *(get()); } - element_type *operator ->()const{ return get(); } + const element_type& operator *()const{ return *(get()); } + const element_type *operator ->()const{ return get(); } + element_type& operator *(){ return *(get()); } + element_type *operator ->(){ return get(); } - element_type* get() const{ return ref_->get_data(); } + const element_type* get() const{ return ref_->get_data(); } + element_type* get(){ return ref_->get_data(); } size_t use_count() const{ return ref_->count(); } operator bool() const{ return get() != nullptr; } -- GitLab