[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