[Issue 24456] New: CTFE implicit conversion to void[] produces wrong length
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Wed Mar 27 13:04:24 UTC 2024
https://issues.dlang.org/show_bug.cgi?id=24456
Issue ID: 24456
Summary: CTFE implicit conversion to void[] produces wrong
length
Product: D
Version: D2
Hardware: x86
OS: Windows
Status: NEW
Severity: normal
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: Bastiaan at Veelo.net
```
void check(void[] v, size_t len)
{
import std.conv;
assert(v.length == len,
"v.length is " ~ v.length.to!string ~
", expected " ~ len.to!string);
}
int implicitConversion()
{
int[2] arr;
check(arr, 8);
return 42;
}
int noConversion()
{
ubyte[8] arr;
check(arr, 8);
return 42;
}
struct S
{
int i = implicitConversion; // Error: "v.length is 2, expected 8"
int j = noConversion; // Fine
}
void main()
{
int i = implicitConversion; // Fine
int j = noConversion; // Fine
}
```
This problem surfaced while trying do statically initialize an instance of
std.bitmanip.BitArray.
--
More information about the Digitalmars-d-bugs
mailing list