On 8/5/20 5:58 PM, Per Nordlöw wrote:
Is it possible to implement

template maxSizeOf(T...)
{
     static if (T.length == 1)
         enum size_t maxSizeOf = T[0].sizeof;
     else
     {
         enum size_t firstSize = T[0].sizeof;
         enum size_t maxSizeRest = maxSizeOf!(T[1 .. $]);
        enum size_t maxSizeOf = firstSize >= maxSizeRest ? firstSize : maxSizeRest;
     }
}

in a non-recursive way?

Boring in D. :p

template maxSizeOf(T...) {
  enum maxSizeOf = compute();

  auto compute() {
    size_t result;
    static foreach (t; T) {
      if (t.sizeof > result) {
        result = t.sizeof;
      }
    }
    return result;
  }
}

void main() {
  pragma(msg, maxSizeOf!(double, char, string));
}

Ali

Reply via email to