AK: Extend round_to_power_of_two to types other than unsigned

The previous implementation hardcoded unsigned, when the same logic
easily extends to unsigned long, signed types, and other Integral types.
This commit is contained in:
Andrew Kaster 2021-05-29 09:18:22 -06:00 committed by Linus Groh
parent 8f22af087e
commit eae14f4ba6
Notes: sideshowbarker 2024-07-18 17:13:04 +09:00

View File

@ -10,7 +10,8 @@
#include <AK/Assertions.h>
constexpr unsigned round_up_to_power_of_two(unsigned value, unsigned power_of_two)
template<typename T, typename U>
constexpr auto round_up_to_power_of_two(T value, U power_of_two) requires(IsIntegral<T>&& IsIntegral<U>)
{
return ((value - 1) & ~(power_of_two - 1)) + power_of_two;
}