diff --git a/include/chaiscript/dispatchkit/dispatchkit.hpp b/include/chaiscript/dispatchkit/dispatchkit.hpp index 0bbe083..6f704b6 100644 --- a/include/chaiscript/dispatchkit/dispatchkit.hpp +++ b/include/chaiscript/dispatchkit/dispatchkit.hpp @@ -1346,13 +1346,15 @@ namespace chaiscript Stack_Holder() : call_depth(0) { + stacks.reserve(2); stacks.emplace_back(1); call_params.emplace_back(); + call_params.back().reserve(2); } - std::deque stacks; + std::vector stacks; - std::deque> call_params; + std::vector> call_params; int call_depth; }; diff --git a/include/chaiscript/dispatchkit/proxy_functions.hpp b/include/chaiscript/dispatchkit/proxy_functions.hpp index 1e761fe..c2d4045 100644 --- a/include/chaiscript/dispatchkit/proxy_functions.hpp +++ b/include/chaiscript/dispatchkit/proxy_functions.hpp @@ -184,10 +184,10 @@ namespace chaiscript if (m_arity == 0) { return true; - } else if (m_arity > 1 && m_types.size() > 1) { - return compare_first_type(vals[0], t_conversions) && compare_type_to_param(m_types[2], vals[1], t_conversions); + } else if (m_arity > 1) { + return compare_type_to_param(m_types[1], vals[0], t_conversions) && compare_type_to_param(m_types[2], vals[1], t_conversions); } else { - return compare_first_type(vals[0], t_conversions); + return compare_type_to_param(m_types[1], vals[0], t_conversions); } } else { return false;