March 29, 2020 [Issue 20704] New: `-preview=rvaluerefparam` | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=20704 Issue ID: 20704 Summary: `-preview=rvaluerefparam` Product: D Version: D2 Hardware: All OS: All Status: NEW Keywords: industry Severity: normal Priority: P1 Component: dmd Assignee: nobody@puremagic.com Reporter: pro.mathias.lang@gmail.com Consider the following code: ``` void foo (T) (const auto ref T arg = T.init) {} void bar (T) (const ref T arg = T.init) {} void main () { int i; foo!int(); bar!int(i); } ``` This will produce the following error message: ``` autoref.d(2): Error: cannot modify constant `0` autoref.d(8): Error: template instance `autoref.bar!int` error instantiating ``` Compiled with or without `-preview=rvaluerefparam`, DMD 2.091. Now there's a few problem with this: 1) The error message is wrong: there's no modification taking place, the parameter is `const`; 2) It should work with the `-preview` switch; 3) Should the error message happens if the default parameter is not used ? It triggers on the definition ATM. -- |
Copyright © 1999-2021 by the D Language Foundation