Making enum join variadic

Artur Skawina via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu May 1 17:38:08 PDT 2014


On 05/02/14 00:24, "Nordlöw" via Digitalmars-d-learn wrote:
> How can I make `join` variadic (by filling in njoin) in the following code?

   import std.array, std.range, std.algorithm;
   import std.stdio;

   template Njoin(ES...) {
      mixin({
         string r = "enum Njoin { ";
         foreach (E; ES)
            r ~= [__traits(allMembers, E), " "].join(",");
         return r ~ "}";
      }());
   }

   void main(string[] args)
   {
       enum E1 { A, B, C }
       enum E2 { E, F, G }
       alias E12 = Njoin!(E1, E2);
       E12 e12;
       writeln(e12.min, ",", e12.max);
   }

artur


More information about the Digitalmars-d-learn mailing list