digitalmars.D.bugs - [Issue 18586] New: Eponymous mixin templates
- d-bugmail puremagic.com (44/44) Mar 10 2018 https://issues.dlang.org/show_bug.cgi?id=18586
https://issues.dlang.org/show_bug.cgi?id=18586 Issue ID: 18586 Summary: Eponymous mixin templates Product: D Version: D2 Hardware: x86 OS: Windows Status: NEW Severity: enhancement Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: simen.kjaras gmail.com The eponymous template trick is very useful in other cases, but there seems to be an oversight in that mixin templates don't benefit from it. The usefulness of this lies in a reduced reliance on string mixins, and a decoupling of the mixin template arguments from the name of the mixed-in code. Consider: struct S { int n; mixin fun!("myfunction", "return n;"); } mixin template fun(string funName, string body) { mixin("auto "~funName~"() { "~body~" }"); } unittest { auto s = S(3); assert(s.myfunction == 3); } That's the code you currently have to write to mix in a function with a specific name. With eponymous templates, the function name wouldn't need to be passed: struct S { int n; mixin fun!"return n;" myfunction ; } mixin template fun(string body) { mixin("auto fun() { "~body~" }"); } unittest { auto s = S(3); assert(s.myfunction == 3); } --
Mar 10 2018