Fixed Message::set_header_list as per review comments. Changed ClonablePtr to use clone() internally

This commit is contained in:
accelerated
2018-12-03 08:53:25 -05:00
parent e96dc6d1fc
commit 6bbddcd5d5
3 changed files with 7 additions and 29 deletions

View File

@@ -60,8 +60,7 @@ public:
* \param rhs The pointer to be copied
*/
ClonablePtr(const ClonablePtr& rhs)
: handle_(rhs.get_cloner() ? std::unique_ptr<T, Deleter>(rhs.clone(), rhs.get_deleter()) :
std::unique_ptr<T, Deleter>(rhs.get(), rhs.get_deleter())),
: handle_(std::unique_ptr<T, Deleter>(rhs.clone(), rhs.get_deleter())),
cloner_(rhs.get_cloner()) {
}
@@ -73,8 +72,7 @@ public:
*/
ClonablePtr& operator=(const ClonablePtr& rhs) {
if (this != &rhs) {
handle_ = rhs.get_cloner() ? std::unique_ptr<T, Deleter>(rhs.clone(), rhs.get_deleter()) :
std::unique_ptr<T, Deleter>(rhs.get(), rhs.get_deleter());
handle_ = std::unique_ptr<T, Deleter>(rhs.clone(), rhs.get_deleter());
cloner_ = rhs.get_cloner();
}
return *this;
@@ -130,7 +128,7 @@ private:
* \brief Clones the internal pointer using the specified cloner function.
*/
T* clone() const {
return cloner_ ? cloner_(handle_.get()) : handle_.get();
return cloner_ ? cloner_(get()) : get();
}
std::unique_ptr<T, Deleter> handle_;