Functions returning void can't be executed at compile time, even if they have out/inout parameters:
---
urxae@urxae:~/tmp$ cat test.d
void bar(out int x) { x = 2; }
int foo() { int y; bar(y); return y; }
const int z = foo();
void main(){}
urxae@urxae:~/tmp$ dmd test.d
test.d(3): Error: cannot evaluate bar(y) at compile time
test.d(5): Error: cannot evaluate foo() at compile time
---
If bar returns an unused int it compiles fine:
---
urxae@urxae:~/tmp$ cat test.d
int bar(out int x) { x = 2; return 1; }
int foo() { int y; bar(y); return y; }
const int z = foo();
void main(){}
urxae@urxae:~/tmp$ dmd test.d
gcc test.o -o test -m32 -lphobos -lpthread -lm -Xlinker -L/home/urxae/opt/dmd/lib
---