all: various cleanups

This commit is contained in:
Markus F.X.J. Oberhumer
2023-10-30 12:17:51 +01:00
parent 38a676f6f7
commit 37b923245d
7 changed files with 44 additions and 37 deletions
+14 -18
View File
@@ -31,24 +31,6 @@
namespace upx {
/*************************************************************************
// misc
**************************************************************************/
// a reinterpret_cast that does not trigger -Wcast-align warnings
template <class Result, class From>
forceinline Result ptr_reinterpret_cast(From *ptr) {
static_assert(std::is_pointer_v<Result>);
static_assert(!std::is_const_v<std::remove_pointer_t<Result> >); // enforce same constness
return (Result) (void *) ptr;
}
template <class Result, class From>
forceinline Result ptr_reinterpret_cast(const From *ptr) {
static_assert(std::is_pointer_v<Result>);
static_assert(std::is_const_v<std::remove_pointer_t<Result> >); // required
return (Result) (const void *) ptr;
}
/*************************************************************************
// type_traits
**************************************************************************/
@@ -81,6 +63,20 @@ struct UnsignedSizeOf {
static constexpr unsigned value = unsigned(Size);
};
// a reinterpret_cast that does not trigger -Wcast-align warnings
template <class Result, class From>
forceinline Result ptr_reinterpret_cast(From *ptr) noexcept {
static_assert(std::is_pointer_v<Result>);
static_assert(!std::is_const_v<std::remove_pointer_t<Result> >); // enforce same constness
return reinterpret_cast<Result>(reinterpret_cast<void *>(ptr));
}
template <class Result, class From>
forceinline Result ptr_reinterpret_cast(const From *ptr) noexcept {
static_assert(std::is_pointer_v<Result>);
static_assert(std::is_const_v<std::remove_pointer_t<Result> >); // required
return reinterpret_cast<Result>(reinterpret_cast<const void *>(ptr));
}
class noncopyable {
protected:
forceinline constexpr noncopyable() noexcept {}