On Sunday, 25 February 2018 at 00:36:16 UTC, kdevel wrote:
A code fragment using static foreach

https://forum.dlang.org/thread/jiefcxwqbjzqnmtaz...@forum.dlang.org#post-beruryblsptnunsowjph:40forum.dlang.org

does not compile with the current GDC (GCC 4.9.4 and 5.5.0). I tried to encapsulate this code into a version block but GDC still checks the syntax. Is there any more elegant way besides of using a mixin?:

   version (DigitalMars) {
      pragma (msg, "DMD");
      mixin (`
enum typenames = ["float", "double", "real", "short", "int", "long"];
      static foreach (s; typenames) {
         pragma (msg, s);
         disp[s] = mixin ("&mymain!" ~ s);
      }
      `);
   }

Are you looking for something like this?

---
static if (__traits(compiles, () { static foreach (i; [0]){} }))
    version = supportsStaticForeach;

void main()
{
    version(supportsStaticForeach) {
       pragma(msg, "Yay, your compiler is new enough.");
    }
}
---


https://run.dlang.io/is/PZN5Nv

Is there any more elegant way besides of using a mixin?:

Don't support GDC (or only GDC-master)?

Reply via email to