Skip to content

Commit dfa236b

Browse files
authored
Fix default constructor implementation
Make default behavior as in build-in type
1 parent 4c0ba8c commit dfa236b

1 file changed

Lines changed: 9 additions & 10 deletions

File tree

include/long_uint.h

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
//
3131
////////////////////////////////////////////////////////////////////////////////////////////////////
3232
//
33-
// $Id: long_uint.h 146 2021-09-04 11:56:58Z ykalmykov $
33+
// $Id: long_uint.h 151 2021-09-07 11:33:21Z ykalmykov $
3434
//
3535
////////////////////////////////////////////////////////////////////////////////////////////////////
3636

@@ -67,7 +67,7 @@ class long_uint_t
6767
////////////////////////////////////////////////////////////////////////////////////////////////
6868
// construction/destruction
6969

70-
constexpr long_uint_t() noexcept;
70+
constexpr long_uint_t() noexcept = default;
7171
constexpr long_uint_t(const long_uint_t& that) noexcept = default;
7272
constexpr long_uint_t(long_uint_t&& that) noexcept = default;
7373
constexpr long_uint_t(native_array_t digits) noexcept;
@@ -153,11 +153,6 @@ constexpr type_t muldiv(const type_t& value, const type_t& multiplier, const typ
153153
////////////////////////////////////////////////////////////////////////////////////////////////////
154154
// construction/destruction
155155

156-
template<typename native_t, uint_t size>
157-
constexpr long_uint_t<native_t, size>::long_uint_t() noexcept
158-
{
159-
}
160-
161156
template<typename native_t, uint_t size>
162157
constexpr long_uint_t<native_t, size>::long_uint_t(native_array_t digits) noexcept
163158
: digits(std::move(digits))
@@ -311,7 +306,9 @@ constexpr long_uint_t<native_t, size> long_uint_t<native_t, size>::operator~() c
311306
{
312307
long_uint_t result;
313308

314-
for (uint_t n = 0; n < std::size(digits); ++n)
309+
result.digits[0] = ~digits[0];
310+
311+
for (uint_t n = 1; n < std::size(digits); ++n)
315312
result.digits[n] = ~digits[n];
316313

317314
return result;
@@ -575,10 +572,12 @@ constexpr long_uint_t<native_t, size> long_uint_t<native_t, size>::operator-() c
575572
template<typename native_t, uint_t size>
576573
constexpr long_uint_t<native_t, size>& long_uint_t<native_t, size>::operator*=(const long_uint_t& that) noexcept
577574
{
575+
native_t carry = 0;
576+
578577
long_uint_t result;
578+
result.digits[0] = mulc(digits[0], that.digits[0], carry);
579579

580-
native_t carry = 0;
581-
for (uint_t n = 0; n < std::size(digits); ++n)
580+
for (uint_t n = 1; n < std::size(digits); ++n)
582581
result.digits[n] = mulc(digits[n], that.digits[0], carry);
583582

584583
for (uint_t n = 1; n < std::size(digits); ++n) {

0 commit comments

Comments
 (0)