diff --git a/include/intx/intx.hpp b/include/intx/intx.hpp index eb53d119..c455f8b1 100644 --- a/include/intx/intx.hpp +++ b/include/intx/intx.hpp @@ -923,6 +923,24 @@ struct uint return static_cast(words_[0]); } + uint& operator=(uint64_t v) noexcept { + words_[0] = v; + for (size_t i = 1; i < num_words; ++i) + words_[i] = 0; + return *this; + } + + template + constexpr uint& operator=(const uint& x) noexcept + requires(M <= N) + { + for (size_t i = 0; i < uint::num_words; ++i) + words_[i] = x[i]; + for (size_t i = uint::num_words; i < num_words; ++i) + words_[i] = 0; + return *this; + } + friend constexpr uint operator+(const uint& x, const uint& y) noexcept { return addc(x, y).value;