-
-
Notifications
You must be signed in to change notification settings - Fork 739
Open
Labels
Description
snarwin+bugzilla (@pbackus) reported this on 2024-11-25T15:46:38Z
Transfered from https://issues.dlang.org/show_bug.cgi?id=24880
Description
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
---