On Thursday, 24 January 2019 at 07:18:58 UTC, Mike Parker wrote:
Walter and Andrei have declined to accept DIP 1016, "ref T
accepts r-values", on the grounds that it has two fundamental
flaws that would open holes in the language. They are not
opposed to the feature in principle and suggested that a
proposal that closes those holes and covers all the bases will
have a higher chance of getting accepted.
You can read a summary of the Formal Assessment at the bottom
of the document:
https://github.com/dlang/DIPs/blob/master/DIPs/rejected/DIP1016.md
fun(10)
==>
{
T __temp0 = void;
fun(__temp0 := 10);
}
The first problem the Language Maintainers identified with this
approach is that the rewrite is from an expression to a
statement, rendering it invalid.
The expression should be rewritten as an expression to clarify
how it behaves in larger expressions.
But it does, or at least gives an example of:
https://github.com/dlang/DIPs/blob/master/DIPs/rejected/DIP1016.md#function-calls-as-arguments
The statement the expression is part of is "enscoped" and the
temporaries live in the scope of that statement.