On Sunday, 25 June 2017 at 15:58:48 UTC, Johan Engelen wrote:
How would you solve this problem: do an optional function call depending on some version(X). If version(X) is not defined, there should be no call and no extra code at -O0.

```
{
...
foo(); // either compiles to a function call, or to _nothing_.
...
}
```

In C, you could do something like:
```
#if X
  void foo() {......}
#else
  #define foo()
#endif
```

How would you do this in D?

I can think of `mixin(foo())` but there is probably a nicer way that preserves normal function calling syntax.

Cheers,
  Johan

Am I missing something, or can't you just version both the function and the function ćall?

version(X)
void foo() { /* ... */ }

void main()
{
    version(X)
    {
        foo();
    }
}

Reply via email to