diff --git a/include/chaiscript/dispatchkit/any.hpp b/include/chaiscript/dispatchkit/any.hpp index 16c9217..6704bb3 100644 --- a/include/chaiscript/dispatchkit/any.hpp +++ b/include/chaiscript/dispatchkit/any.hpp @@ -47,7 +47,7 @@ namespace chaiscript { virtual ~Data() {} virtual void *data() = 0; virtual const std::type_info &type() const = 0; - virtual std::shared_ptr clone() const = 0; + virtual std::unique_ptr clone() const = 0; }; template @@ -71,9 +71,9 @@ namespace chaiscript { return m_type; } - std::shared_ptr clone() const CHAISCRIPT_OVERRIDE + std::unique_ptr clone() const CHAISCRIPT_OVERRIDE { - return std::shared_ptr(new Data_Impl(m_data)); + return std::unique_ptr(new Data_Impl(m_data)); } Data_Impl &operator=(const Data_Impl&) = delete; @@ -82,7 +82,7 @@ namespace chaiscript { T m_data; }; - std::shared_ptr m_data; + std::unique_ptr m_data; public: // construct/copy/destruct @@ -100,7 +100,7 @@ namespace chaiscript { template Any(const ValueType &t_value) - : m_data(std::shared_ptr(new Data_Impl(t_value))) + : m_data(std::unique_ptr(new Data_Impl(t_value))) { } @@ -114,7 +114,7 @@ namespace chaiscript { template Any & operator=(const ValueType &t_value) { - m_data = std::shared_ptr(new Data_Impl(t_value)); + m_data = std::unique_ptr(new Data_Impl(t_value)); return *this; } @@ -138,9 +138,7 @@ namespace chaiscript { // modifiers Any & swap(Any &t_other) { - std::shared_ptr data = t_other.m_data; - t_other.m_data = m_data; - m_data = data; + std::swap(t_other.m_data, m_data); return *this; }