diff --git a/src/ripple/app/misc/impl/LoadFeeTrack.cpp b/src/ripple/app/misc/impl/LoadFeeTrack.cpp index cc144c7e4..49553d8aa 100644 --- a/src/ripple/app/misc/impl/LoadFeeTrack.cpp +++ b/src/ripple/app/misc/impl/LoadFeeTrack.cpp @@ -25,7 +25,9 @@ #include #include #include + #include +#include #include namespace ripple { @@ -81,47 +83,18 @@ LoadFeeTrack::lowerLocalFee () //------------------------------------------------------------------------------ -// NIKB TODO: Once we get C++17, we can replace lowestTerms -// with this: -// -// template && -// std::is_integral_v> -// > -// void lowestTerms(T1& a, T2& b) -// { -// if (auto const gcd = std::gcd(a, b)) -// { -// a /= gcd; -// b /= gcd; -// } -// } - template ::value && - std::is_unsigned::value && - sizeof(T1) <= sizeof(std::uint64_t) >, - class = std::enable_if_t < - std::is_integral::value && - std::is_unsigned::value && - sizeof(T2) <= sizeof(std::uint64_t) > + class = std::enable_if_t< + std::is_integral_v && + std::is_integral_v> > void lowestTerms(T1& a, T2& b) { - if (a == 0 && b == 0) - return; - - std::uint64_t x = a, y = b; - while (y != 0) + if (auto const gcd = std::gcd(a, b)) { - auto t = x % y; - x = y; - y = t; + a /= gcd; + b /= gcd; } - a /= x; - b /= x; } // Scale using load as well as base rate