From 7052234650d4a3a7ded99e9cc763f3b990a6c088 Mon Sep 17 00:00:00 2001 From: Jason Turner Date: Fri, 13 Jul 2012 13:54:48 -0600 Subject: [PATCH] Revert "Use unique_ptr instead of shared_ptr in our any implementation, >10% speed improvement" This reverts commit f27739cf7183a0f9cbdffaa7e29c7b47b25b0508. --- include/chaiscript/dispatchkit/any.hpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/include/chaiscript/dispatchkit/any.hpp b/include/chaiscript/dispatchkit/any.hpp index 2298858..e8dcfb8 100644 --- a/include/chaiscript/dispatchkit/any.hpp +++ b/include/chaiscript/dispatchkit/any.hpp @@ -44,7 +44,7 @@ namespace chaiscript { { virtual void *data() = 0; virtual const std::type_info &type() const = 0; - virtual std::unique_ptr clone() const = 0; + virtual std::shared_ptr clone() const = 0; }; template @@ -66,16 +66,16 @@ namespace chaiscript { return m_type; } - std::unique_ptr clone() const + std::shared_ptr clone() const { - return std::unique_ptr(new Data_Impl(m_data)); + return std::shared_ptr(new Data_Impl(m_data)); } const std::type_info &m_type; T m_data; }; - std::unique_ptr m_data; + std::shared_ptr m_data; public: // construct/copy/destruct @@ -94,7 +94,7 @@ namespace chaiscript { template Any(const ValueType &t_value) { - m_data = std::unique_ptr(new Data_Impl(t_value)); + m_data = std::shared_ptr(new Data_Impl(t_value)); } Any & operator=(const Any &t_any) @@ -131,7 +131,9 @@ namespace chaiscript { // modifiers Any & swap(Any &t_other) { - std::swap(m_data, t_other.m_data); + std::shared_ptr data = t_other.m_data; + t_other.m_data = m_data; + m_data = data; return *this; }