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)); } } }