diff options
| author | Lioncash <mathew1800@gmail.com> | 2019-11-13 14:58:40 -0500 | 
|---|---|---|
| committer | Lioncash <mathew1800@gmail.com> | 2019-11-13 14:58:43 -0500 | 
| commit | c5c89a4d5c57fd4691981601ada0d9ffe3cf72d0 (patch) | |
| tree | e5d2309501c76e5d663d382356d8c6f619d1e3e0 /src/common | |
| parent | cc9e68202108affae6354a983851bfef1892bab3 (diff) | |
common/hash: Remove unused HashableStruct
This is unused, so it can be removed. There's better ways of ensuring
zeroed out padding bits, like using zero-initialization, anyhow.
Diffstat (limited to 'src/common')
| -rw-r--r-- | src/common/hash.h | 35 | 
1 files changed, 0 insertions, 35 deletions
| diff --git a/src/common/hash.h b/src/common/hash.h index ebd4125e2..b2538f3ea 100644 --- a/src/common/hash.h +++ b/src/common/hash.h @@ -35,41 +35,6 @@ static inline u64 ComputeStructHash64(const T& data) {      return ComputeHash64(&data, sizeof(data));  } -/// A helper template that ensures the padding in a struct is initialized by memsetting to 0. -template <typename T> -struct HashableStruct { -    // In addition to being trivially copyable, T must also have a trivial default constructor, -    // because any member initialization would be overridden by memset -    static_assert(std::is_trivial_v<T>, "Type passed to HashableStruct must be trivial"); -    /* -     * We use a union because "implicitly-defined copy/move constructor for a union X copies the -     * object representation of X." and "implicitly-defined copy assignment operator for a union X -     * copies the object representation (3.9) of X." = Bytewise copy instead of memberwise copy. -     * This is important because the padding bytes are included in the hash and comparison between -     * objects. -     */ -    union { -        T state; -    }; - -    HashableStruct() { -        // Memset structure to zero padding bits, so that they will be deterministic when hashing -        std::memset(&state, 0, sizeof(T)); -    } - -    bool operator==(const HashableStruct<T>& o) const { -        return std::memcmp(&state, &o.state, sizeof(T)) == 0; -    }; - -    bool operator!=(const HashableStruct<T>& o) const { -        return !(*this == o); -    }; - -    std::size_t Hash() const { -        return Common::ComputeStructHash64(state); -    } -}; -  struct PairHash {      template <class T1, class T2>      std::size_t operator()(const std::pair<T1, T2>& pair) const noexcept { | 
