@@ -747,7 +747,7 @@ namespace te_builtins
747747
748748 // force the bit manipulation to stay unsigned, like what Excel does
749749 const uint8_t intVal{ static_cast <uint8_t >(val) };
750- const decltype (intVal) result{ static_cast <decltype (intVal)>(~ intVal) };
750+ const decltype (intVal) result{ std::bit_not <decltype (intVal)>{}( intVal) };
751751 return static_cast <te_type>(result);
752752 }
753753
@@ -769,7 +769,7 @@ namespace te_builtins
769769 }
770770
771771 const uint16_t intVal{ static_cast <uint16_t >(val) };
772- const decltype (intVal) result{ static_cast <decltype (intVal)>(~ intVal) };
772+ const decltype (intVal) result{ std::bit_not <decltype (intVal)>{}( intVal) };
773773 return static_cast <te_type>(result);
774774 }
775775
@@ -795,7 +795,7 @@ namespace te_builtins
795795 }
796796
797797 const uint32_t intVal{ static_cast <uint32_t >(val) };
798- const decltype (intVal) result{ ~ intVal };
798+ const decltype (intVal) result{ std::bit_not< decltype ( intVal)>{}(intVal) };
799799 return static_cast <te_type>(result);
800800 }
801801
@@ -821,7 +821,7 @@ namespace te_builtins
821821 }
822822
823823 const uint64_t intVal{ static_cast <uint64_t >(val) };
824- const decltype (intVal) result{ ~ intVal };
824+ const decltype (intVal) result{ std::bit_not< decltype ( intVal)>{}(intVal) };
825825 return static_cast <te_type>(result);
826826 }
827827
@@ -1210,7 +1210,7 @@ const std::set<te_variable> te_parser::m_functions = { // NOLINT
12101210#ifndef TE_FLOAT
12111211 { " bitand" , static_cast <te_fun2>(te_builtins::te_bitwise_and), TE_PURE },
12121212 { " bitor" , static_cast <te_fun2>(te_builtins::te_bitwise_or), TE_PURE },
1213- #if __cplusplus >= 202002L
1213+ #if __cplusplus >= 202002L
12141214 { " bitlrotate8" , static_cast <te_fun2>(te_builtins::te_left_rotate8), TE_PURE },
12151215 { " bitrrotate8" , static_cast <te_fun2>(te_builtins::te_right_rotate8), TE_PURE },
12161216 { " bitlrotate16" , static_cast <te_fun2>(te_builtins::te_left_rotate16), TE_PURE },
@@ -1221,7 +1221,7 @@ const std::set<te_variable> te_parser::m_functions = { // NOLINT
12211221 { " bitrrotate64" , static_cast <te_fun2>(te_builtins::te_right_rotate64), TE_PURE },
12221222 { " bitlrotate" , static_cast <te_fun2>(te_builtins::te_left_rotate), TE_PURE },
12231223 { " bitrrotate" , static_cast <te_fun2>(te_builtins::te_right_rotate), TE_PURE },
1224- #endif
1224+ #endif
12251225 { " bitnot8" , static_cast <te_fun1>(te_builtins::te_bitwise_not8), TE_PURE },
12261226 { " bitnot16" , static_cast <te_fun1>(te_builtins::te_bitwise_not16), TE_PURE },
12271227 { " bitnot32" , static_cast <te_fun1>(te_builtins::te_bitwise_not32), TE_PURE },
0 commit comments