On Saturday, 7 April 2018 at 11:19:44 UTC, meppl wrote:
On Saturday, 7 April 2018 at 10:25:19 UTC, bauss wrote:
On Saturday, 7 April 2018 at 09:07:48 UTC, sdvcn wrote:

        true?stt="AA":stt="BB";    <<<<-----///Out:BB

It's an UB.

Not a bug.


I want `condition ? expr1 : expr2` to behave like:

-----
auto qc( alias condition, string expr1, string expr2)() {
        if( condition) {
                return mixin( expr1);
        } else {
                return mixin( expr2);
        }
}
-----

You can do so today with lazy:

---
import std.stdio;

auto qc(E1, E2)(bool condition, lazy E1 expr1, lazy E2 expr2)
{
    if (condition)
    {
        return expr1;
    }
    else
    {
        return expr2;
    }
}

void main()
{
    qc(true, "A".writeln, "B".writeln);
    string s;
    qc(true, s = "A", s = "B");
    s.writeln;
}
---

https://run.dlang.io/is/ymZBht
https://dlang.org/articles/lazy-evaluation.html

Reply via email to