From 655a818f13f8f1f95950a4d9cf795cfcf2ca5370 Mon Sep 17 00:00:00 2001 From: Manu Evans Date: Sun, 9 Dec 2018 23:20:15 -0800 Subject: [PATCH] simplify maxAlignment (because max is gigantic!) --- std/traits.d | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/std/traits.d b/std/traits.d index ebecb6e62ed..f8bcf2ae017 100644 --- a/std/traits.d +++ b/std/traits.d @@ -4751,15 +4751,17 @@ template TemplateArgsOf(T : Base!Args, alias Base, Args...) private template maxAlignment(U...) if (isTypeTuple!U) { - import std.meta : staticMap; static if (U.length == 0) static assert(0); else static if (U.length == 1) enum maxAlignment = U[0].alignof; + else static if (U.length == 2) + enum maxAlignment = U[0].alignof > U[1].alignof ? U[0].alignof : U[1].alignof; else { - import std.algorithm.comparison : max; - enum maxAlignment = max(staticMap!(.maxAlignment, U)); + enum a = maxAlignment!(U[0 .. ($+1)/2]); + enum b = maxAlignment!(U[($+1)/2 .. $]); + enum maxAlignment = a > b ? a : b; } }