November 25 [Issue 24880] New: to!string with inout enum argument fails to compile | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=24880 Issue ID: 24880 Summary: to!string with inout enum argument fails to compile Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: normal Priority: P1 Component: phobos Assignee: nobody@puremagic.com Reporter: snarwin+bugzilla@gmail.com As of DMD 2.109.1, the following program fails to compile: --- enum E { One } inout(E) fun(inout(E) e) { import std.conv; auto s = e.to!string; return e; } --- The error message is: --- /usr/include/dmd/phobos/std/conv.d(1227): Error: variable `std.conv.value` - only parameters or stack-based variables can be `inout` /usr/include/dmd/phobos/std/conv.d(210): Error: template instance `std.conv.toImpl!(string, inout(E))` error instantiating bug.d(6): instantiated from here: `to!(inout(E))` --- This error occurs because toImpl attempts to pass an inout(E) value as an argument to the template enumRep. The instantiation fails because inout values cannot be used as template arguments: --- enum E { One } enum example(T, T value) = true; alias test = example!(inout(E), E.One); // Error: only parameters or stack-based variables can be `inout --- -- |
Copyright © 1999-2021 by the D Language Foundation