refactor: modernize the implementation of uint256.*

- Constructors of uint256 to utilize Span instead of requiring a std::vector
- converts m_data into a std::array
- Prefers using `WIDTH` instead of `sizeof(m_data)`
- make all the things constexpr
- replace C style functions with c++ equivalents
    - memset -> std::fill
    - memcpy -> std::copy
        Note: In practice, implementations of std::copy avoid multiple assignments and use bulk copy functions such as std::memmove if the value type is TriviallyCopyable and the iterator types satisfy LegacyContiguousIterator. (https://en.cppreference.com/w/cpp/algorithm/copy)
    - memcmp -> std::memcmp
This commit is contained in:
pasta
2022-10-19 15:16:04 -05:00
parent 1ea02791f3
commit 935acdcc79
6 changed files with 40 additions and 62 deletions

View File

@@ -15,6 +15,7 @@
#include <chrono>
#include <cstdint>
#include <limits>
#include <vector>
/**
* Overall design of the RNG and entropy sources.