Error with implicit cast of ^^=
wjoe
invalid at example.com
Tue Jul 13 11:12:23 UTC 2021
```D
byte x = some_val;
long y = some_val;
x ^^= y; // Error: cannot implicitly convert expression
pow(cast(long)cast(int)x, y) of type long to byte
```
Is there a way to do this via ^^= ?
This is part of a unittest for opIndexOpAssign where the type of
x is that of i.opIndex(_i). It's generated from a list of
operators like this:
```D
part_int_t!(1, 8, 10) i;
static assert(is(typeof(i[0]): short));
static assert(is(typeof(i[1]): byte));
static assert(is(typeof(i[2]): bool));
static foreach(op; ["+=", "-=", "^^=", ...])
{{
typeof(i[1]) x;
mixin("x" ~ op ~ "y;");
mixin("i[1]" ~ op ~ "y;");
assert(i == x);
}}
```
I rewrote it to something like
```D
mixin("x = cast(typeof(x))(x" ~ op[0..$-1] ~ " y);");
```
but I'm curious if there's a less convoluted way.
More information about the Digitalmars-d-learn
mailing list