From ac7af60d76504563a81b3737c58109814aa6924b Mon Sep 17 00:00:00 2001 From: Jason Turner Date: Tue, 22 Aug 2017 15:54:42 -0600 Subject: [PATCH] Make constructors return values, not shared_ptr --- include/chaiscript/dispatchkit/callable_traits.hpp | 4 ++-- include/chaiscript/dispatchkit/dispatchkit.hpp | 4 ++-- include/chaiscript/dispatchkit/proxy_constructors.hpp | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/chaiscript/dispatchkit/callable_traits.hpp b/include/chaiscript/dispatchkit/callable_traits.hpp index 8d7936d2..0dc92416 100644 --- a/include/chaiscript/dispatchkit/callable_traits.hpp +++ b/include/chaiscript/dispatchkit/callable_traits.hpp @@ -17,8 +17,8 @@ namespace chaiscript { struct Constructor { template - std::shared_ptr operator()(Inner&& ... inner) const { - return std::make_shared(std::forward(inner)...); + constexpr Class operator()(Inner&& ... inner) const { + return Class(std::forward(inner)...); } }; diff --git a/include/chaiscript/dispatchkit/dispatchkit.hpp b/include/chaiscript/dispatchkit/dispatchkit.hpp index 1d8dc85c..e469ca29 100644 --- a/include/chaiscript/dispatchkit/dispatchkit.hpp +++ b/include/chaiscript/dispatchkit/dispatchkit.hpp @@ -1363,8 +1363,8 @@ namespace chaiscript const auto lhssize = lhsparamtypes.size(); const auto rhssize = rhsparamtypes.size(); - static const auto boxed_type = user_type(); - static const auto boxed_pod_type = user_type(); + constexpr const auto boxed_type = user_type(); + constexpr const auto boxed_pod_type = user_type(); for (size_t i = 1; i < lhssize && i < rhssize; ++i) { diff --git a/include/chaiscript/dispatchkit/proxy_constructors.hpp b/include/chaiscript/dispatchkit/proxy_constructors.hpp index bbe79d7a..10b72cf5 100644 --- a/include/chaiscript/dispatchkit/proxy_constructors.hpp +++ b/include/chaiscript/dispatchkit/proxy_constructors.hpp @@ -26,7 +26,7 @@ namespace chaiscript auto call = dispatch::detail::Constructor(); return Proxy_Function( - chaiscript::make_shared (Params...), decltype(call)>>(call)); + chaiscript::make_shared>(call)); } } }