summaryrefslogtreecommitdiff
path: root/mfbt
diff options
context:
space:
mode:
authorFranklinDM <mrmineshafter17@gmail.com>2023-03-17 18:54:21 +0800
committerFranklinDM <mrmineshafter17@gmail.com>2023-03-17 20:29:19 +0800
commit88d2d5eef62a726cf4b4081e9f48f3ef6e2bbff2 (patch)
treecac47af2a494222e8d5980b153b49d4f0a2b42d7 /mfbt
parent5e6a0efb65eb9176db9ec37470c5730fd4ef5d88 (diff)
downloaduxp-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.h27
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)). */