Fix numeric overload resolution

Closes #209
This commit is contained in:
Jason Turner
2015-10-01 09:56:53 -06:00
parent d9fa5605ac
commit 5a651e2b8a
2 changed files with 2 additions and 1 deletions

View File

@@ -1033,6 +1033,7 @@ namespace chaiscript
if (funs.first != loc) t_loc.store(uint_fast32_t(funs.first), std::memory_order_relaxed);
Boxed_Value bv = dispatch::dispatch(*funs.second, params, m_conversions);
// the result of a clone is never to be marked as a return_value
// \todo see if we can eliminate this comparison
if (t_name == "clone") {
bv.reset_return_value();
}

View File

@@ -211,7 +211,7 @@ namespace chaiscript
if (ti.is_undef()
|| ti.bare_equal(user_type<Boxed_Value>())
|| (!bv.get_type_info().is_undef()
&& (ti.bare_equal(user_type<Boxed_Number>())
&& ( (ti.bare_equal(user_type<Boxed_Number>()) && bv.get_type_info().is_arithmetic())
|| ti.bare_equal(bv.get_type_info())
|| bv.get_type_info().bare_equal(user_type<std::shared_ptr<const Proxy_Function_Base> >())
|| t_conversions.converts(ti, bv.get_type_info())