String Mixins & Compile Time Evaluation

Don nospam at nospam.com
Tue Nov 17 02:07:24 PST 2009


Travis Boucher wrote:
> I've been playing with string mixins, and they are very powerful.
> 
> One thing I can't figure out is what exactly can and cannot be evaluated 
> at compile time.
> 
> For example:
> 
> ----
> char[] myFunc1() {
>     return "int a = 1;";
> }
> 
> char[] myFunc2() {
>     char[] myFunc3() {
>         return "int b = 2;";
>     }
>     return myFunc3();
> }
> 
> void main() {
>     mixin(myFunc1());
>     mixin(myFunc2());
> }
> ----
> 
> myFunc1() can be used as a string mixin.
> myFunc2() can't be.

I think you're using an old version of DMD. It's been working since 
DMD1.047. Please upgrade to the latest version, you'll find it a lot 
less frustrating.
The bottom of "function.html" in the spec gives the rules.
Though it says nested functions aren't supported, but they are.


More information about the Digitalmars-d-learn mailing list