digitalmars.D - Preview switches
- Q. Schroll (22/22) Jun 20 2020 Entering dmd -preview=h shows this list:
- Stanislav Blinov (15/19) Jun 20 2020 Ostensibly, it should enable binding of rvalues (temporaries) as
Entering dmd -preview=h shows this list: =all list information on all upcoming language changes =dip25 implement [..] (Sealed references) =dip1000 implement [..] (Scoped Pointers) =dip1008 implement [..] ( nogc Throwable) =dip1021 implement [..] (Mutable function arguments) =fieldwise use fieldwise comparisons for struct equality =markdown enable Markdown replacements in Ddoc =fixAliasThis when a symbol is resolved, check alias this scope before going to upper scopes =intpromote fix integral promotions for unary + - ~ operators =dtorfields destruct fields of partially constructed objects =rvaluerefparam enable rvalue arguments to ref parameters =nosharedaccess disable access to shared memory objects =in in means scope const While "implement <DIP link omitted>" do link to documents explaining details, I have no idea what `rvaluerefparam` does exactly. Is there an (online) resource where details to the others are given or linked?
Jun 20 2020
On Saturday, 20 June 2020 at 14:36:25 UTC, Q. Schroll wrote:While "implement <DIP link omitted>" do link to documents explaining details, I have no idea what `rvaluerefparam` does exactly. Is there an (online) resource where details to the others are given or linked?Ostensibly, it should enable binding of rvalues (temporaries) as ref arguments for functions (a-la how in C++ temporaries bind to const T&), i.e. Tea makeSomeTea() { /* ... */ } void takeSomeTea(ref const Tea) { /* ... */ } void main() { takeSomeTea(makeSomeTea()); } Without that switch, the above won't compile, because historically D disallowed such binding. Manu (among others) pushed for this to be possible, hence the switch. Though implementation, AFAICT, is still somewhere in the "under construction" territory, judging by Bugzilla.
Jun 20 2020