You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In functions it may be necessary (e.g. for scoping reasons) to assign the return value to a variable and return it later. If the return value is a inout/const/immutable class reference, this fails (cannot modify inout/const/immutable expression...). For const/immutable this is quite easily fixed using Rebindable, but not so for inout...
----
import std.typecons : Rebindable;
class A { }
class C
{
private A _a;
@property const(A) aConst() const nothrow @nogc @safe{ const A retVal; retVal = _a; // ERROR: cannot modify const expression retVal // in this simple case, the error could be avoided by assigning // directly in the declaration of retVal, but something like an // if or try/catch block may force to declare the variable separate // from assigning its value. return retVal;}@property const(A) aConstRebindable() const nothrow @nogc @safe{ Rebindable!(const A) retVal; retVal = _a; // WORKS return retVal;}@property inout(A) aInoutRebindable() inout nothrow @nogc @safe{ Rebindable!(inout A) retVal; retVal = _a; // ERROR: cannot modify inout expression retVal return retVal;}
}
----
Same problem with UnqualRef, which does the same, but also removes shared.
The text was updated successfully, but these errors were encountered:
htvennik reported this on 2019-08-08T15:50:05Z
Transfered from https://issues.dlang.org/show_bug.cgi?id=20115
Description
The text was updated successfully, but these errors were encountered: