On Monday, 8 April 2024 at 08:12:22 UTC, Richard (Rikki) Andrew Cattermole wrote:
```d
template Foo(Args) {
    enum Foo = () {
        return Args.init;
    }();
}
```

Something like that should work instead.

I'm sorry, but I can't comprehend any of your example. What would be fed into `Args`? I don't understand how this works, or how I would use it for what I want.

You would replace it with whatever template parameters you want (including nothing). It's there as a place holder.

Same for the return on the closure.

But the main thing to understand is that the closure that gives the enum a value, that'll be CTFE only, no runtime target.

Are you saying that this is a way to guarantee that the code is compile-time only?

I still understand very little of this code. I'm not experienced in D metaprogramming; just the function I posted above was a major achievement for me. I don't understand how I would use the code you gave in place of the function I have written and posted above.

When you say that "You would replace it with whatever template parameters you want", are you saying that instead of doing `mixin(MakeStringOverload!SetWindowTitle); mixin(MakeStringOverload!LoadShader);` as posted above, I would write `mixin(Foo!(SetWindowTitle, LoadShader));`?

What does the `return Args.init;` line mean in your example? Am I supposed to replace this with a call to the CTFE function I had already written? If so, it didn't work. Making such a replacement resulted in the same "TypeInfo" error that I had already.
  • "Error: `Ty... Liam McGillivray via Digitalmars-d-learn
    • Re: "E... Richard (Rikki) Andrew Cattermole via Digitalmars-d-learn
      • Re: &qu... Liam McGillivray via Digitalmars-d-learn
        • Re:... Richard (Rikki) Andrew Cattermole via Digitalmars-d-learn
          • ... Liam McGillivray via Digitalmars-d-learn
            • ... Richard (Rikki) Andrew Cattermole via Digitalmars-d-learn
              • ... Liam McGillivray via Digitalmars-d-learn
                • ... Richard (Rikki) Andrew Cattermole via Digitalmars-d-learn
                • ... Liam McGillivray via Digitalmars-d-learn
                • ... Steven Schveighoffer via Digitalmars-d-learn
                • ... Liam McGillivray via Digitalmars-d-learn
                • ... Steven Schveighoffer via Digitalmars-d-learn
                • ... Richard (Rikki) Andrew Cattermole via Digitalmars-d-learn
      • Re: &qu... Liam McGillivray via Digitalmars-d-learn
        • Re:... Richard (Rikki) Andrew Cattermole via Digitalmars-d-learn

Reply via email to