summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-06-16 09:41:08 -0400
committerJonathan Bradley <jcb@pikum.xyz>2025-06-16 09:41:08 -0400
commit7c7b8dd41be35ec1c540356e039ef3692fc07732 (patch)
tree4e1e7acdd8d3f08f7e4ea0826527a215681b4527
parent99b71b8a41832e28a300d3ec504cba049f5f3a83 (diff)
pkmacros: use a temporary value for bitwise NOT
-rw-r--r--pkmacros.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/pkmacros.h b/pkmacros.h
index 30144bd..5f50836 100644
--- a/pkmacros.h
+++ b/pkmacros.h
@@ -154,8 +154,8 @@
return a; \
}; \
TypeName operator~(TypeName& a) { \
- a = static_cast<TypeName>(~static_cast<TypeName_T>(a)); \
- return a; \
+ TypeName_T b{static_cast<TypeName_T>(a)}; \
+ return TypeName{static_cast<TypeName_T>(~b)}; \
};
#define TypeSafeInt_H(TypeName, Type, Max) \
TypeSafeInt2_H(TypeName, Type, Max, PK_CONCAT(TypeName, _T), PK_CONCAT(TypeName, _MAX), PK_CONCAT(TypeName, _T_MAX))
@@ -239,7 +239,8 @@
return a; \
}; \
constexpr TypeName operator~(const TypeName& a) { \
- return static_cast<TypeName>(~static_cast<TypeName_T>(a)); \
+ TypeName_T b{static_cast<TypeName_T>(a)}; \
+ return TypeName{static_cast<TypeName_T>(~b)}; \
};
#define TypeSafeInt_constexpr(TypeName, Type, Max) \
TypeSafeInt2_H_constexpr(TypeName, Type, Max, PK_CONCAT(TypeName, _T), PK_CONCAT(TypeName, _MAX), PK_CONCAT(TypeName, _T_MAX))