Is this possible in D?

tcak via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Feb 19 00:36:44 PST 2015


On Thursday, 19 February 2015 at 08:24:08 UTC, Jonathan Marler 
wrote:
> I am having a heck of a time trying to figure out how to do 
> this.
>  How do I change the attributes of a function based on the 
> version without copying the function body?  For example:
>
> version(StaticVersion) {
>     static void myLongFunction()
>     {
>         // long body ...
>     }
> } else {
>     void myLongFunction()
>     {
>         // same long body copied...
>     }
> }
>
> In one version I want the function to be static and in another 
> I don't want it to be static.  I cannot figure out how to do 
> this without copy/pasting the entire function body to both 
> versions.

Same problem is seen with "shared" and "non-shared" class methods 
as well. I hope there is a good solution for it.

If it was C, by using #ifdef #else #endif, just the name line of 
function could be changed, but I am not sure whether that works 
with "version()" expression.


More information about the Digitalmars-d-learn mailing list