diff options
author | FranklinDM <mrmineshafter17@gmail.com> | 2023-03-17 18:54:21 +0800 |
---|---|---|
committer | FranklinDM <mrmineshafter17@gmail.com> | 2023-03-17 20:29:19 +0800 |
commit | 88d2d5eef62a726cf4b4081e9f48f3ef6e2bbff2 (patch) | |
tree | cac47af2a494222e8d5980b153b49d4f0a2b42d7 /mfbt | |
parent | 5e6a0efb65eb9176db9ec37470c5730fd4ef5d88 (diff) | |
download | uxp-88d2d5eef62a726cf4b4081e9f48f3ef6e2bbff2.tar.gz |
Issue #2166 - Part 3: Make tl::Min/Max variadic
Based on https://bugzilla.mozilla.org/show_bug.cgi?id=1338374
Diffstat (limited to 'mfbt')
-rw-r--r-- | mfbt/TemplateLib.h | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/mfbt/TemplateLib.h b/mfbt/TemplateLib.h index 415bba4581..8ab875d21a 100644 --- a/mfbt/TemplateLib.h +++ b/mfbt/TemplateLib.h @@ -26,15 +26,34 @@ namespace mozilla { namespace tl { /** Compute min/max. */ -template<size_t I, size_t J> +template<size_t Size, size_t... Rest> struct Min { - static const size_t value = I < J ? I : J; + static const size_t value = + Size < Min<Rest...>::value + ? Size + : Min<Rest...>::value; }; -template<size_t I, size_t J> + +template<size_t Size> +struct Min<Size> +{ + static const size_t value = Size; +}; + +template<size_t Size, size_t... Rest> struct Max { - static const size_t value = I > J ? I : J; + static const size_t value = + Size > Max<Rest...>::value + ? Size + : Max<Rest...>::value; +}; + +template<size_t Size> +struct Max<Size> +{ + static const size_t value = Size; }; /** Compute floor(log2(i)). */ |