diff --git a/src/utils.cpp b/src/utils.cpp index 1ee73cf..5cfc9d5 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -156,6 +156,8 @@ int ConverToSameArithType(std::any &a, std::any &b, } std::any Add(std::any a, std::any b) { + if (std::any_cast(&a)) a = (bool)false; + if (std::any_cast(&b)) b = (bool)false; int status = ConverToSameArithType(a, b, true); bool *ptr_a_bool = std::any_cast(&a); bool *ptr_b_bool = std::any_cast(&b); @@ -183,6 +185,8 @@ std::any Add(std::any a, std::any b) { throw FatalError("Add: Type Error", 38); } std::any Sub(std::any a, std::any b) { + if (std::any_cast(&a)) a = (bool)false; + if (std::any_cast(&b)) b = (bool)false; ConverToSameArithType(a, b); bool *ptr_a_bool = std::any_cast(&a); bool *ptr_b_bool = std::any_cast(&b); @@ -201,6 +205,8 @@ std::any Sub(std::any a, std::any b) { return a; } std::any Mul(std::any a, std::any b) { + if (std::any_cast(&a)) a = (bool)false; + if (std::any_cast(&b)) b = (bool)false; int status = ConverToSameArithType(a, b, true); bool *ptr_a_bool = std::any_cast(&a); bool *ptr_b_bool = std::any_cast(&b); @@ -248,6 +254,8 @@ std::any Mul(std::any a, std::any b) { throw FatalError("Mul: Type Error", 42); } std::any Div(std::any a, std::any b) { + if (std::any_cast(&a)) a = (bool)false; + if (std::any_cast(&b)) b = (bool)false; bool *ptr_a_bool = std::any_cast(&a); bool *ptr_b_bool = std::any_cast(&b); ZYM::int2048 *ptr_a_int2048 = std::any_cast(&a); @@ -266,6 +274,8 @@ std::any Div(std::any a, std::any b) { return a; } std::any Divv(std::any a, std::any b) { + if (std::any_cast(&a)) a = (bool)false; + if (std::any_cast(&b)) b = (bool)false; ConverToSameArithType(a, b); bool *ptr_a_bool = std::any_cast(&a); bool *ptr_b_bool = std::any_cast(&b); @@ -289,6 +299,8 @@ std::any Divv(std::any a, std::any b) { throw FatalError("Divv: Type Error", 48); } std::any Mod(std::any a, std::any b) { + if (std::any_cast(&a)) a = (bool)false; + if (std::any_cast(&b)) b = (bool)false; ConverToSameArithType(a, b); bool *ptr_a_bool = std::any_cast(&a); bool *ptr_b_bool = std::any_cast(&b); @@ -338,6 +350,7 @@ std::any &SelfMod(std::any &a, std::any b) { return a; } std::any Neg(std::any a) { + if (std::any_cast(&a)) a = (bool)false; bool *ptr_a_bool = std::any_cast(&a); ZYM::int2048 *ptr_a_int2048 = std::any_cast(&a); double *ptr_a_float = std::any_cast(&a);