On Thursday, 1 August 2013 at 05:22:46 UTC, Ali Çehreli wrote:
On 07/31/2013 06:10 PM, JS wrote:
http://dpaste.dzfl.pl/dbb40dbc
The code was pared down from a lot of string mixin code
generation. I
nest the structs because I want a nested enums. I don't want
have to
have eState and eStateType but eState and eState.Type.
Having the ability to nest enums would solve my problem.
Regardless, I can almost achieve the effect with nested
structs but not
quite.
In the code, I cannot assign to the struct for some reason
even with
alias this on iB, which should make State act like the int
Value.
i.e.,
b.State.Value = Enums.State.A;
works but
b.State = Enums.State.A;
doesn't
It maybe some stupid error on my part but I can't keep my eyes
open
enough to figure it out...
For that assignment to work, the left-hand side must be
assignable. However, the property function State() returns
Enums.eState by-value.
The following has the same issue:
struct S
{
int i_;
@property int i() {
return i_;
}
alias i this;
}
void main()
{
auto s = S();
s = 42;
assert(s.i == 42);
}
Error: cannot implicitly convert expression (42) of type int to
S
To compile, i() must return an lvalue:
@property ref int i() {
Ali
Thanks...