[Issue 13775] [REG2.067a] Broken explicit casting of dynamic array slices of known size to static array of different type

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Thu Feb 12 01:17:07 PST 2015


https://issues.dlang.org/show_bug.cgi?id=13775

sinkuupump at gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |sinkuupump at gmail.com

--- Comment #15 from sinkuupump at gmail.com ---
(In reply to Mathias LANG from comment #14)
> Vibe.d is suffering from it as well:
> ----
> case AF_INET6:
>     ubyte[16] ip = addr_ip6.sin6_addr.s6_addr;
>     auto ret = appender!string();
>     ret.reserve(40);
>     foreach (i; 0 .. 8) {
> 	if (i > 0) ret.put(':');
> 		ret.formattedWrite("%x", bigEndianToNative!ushort(cast(ubyte[2])ip[i*2 ..
> i*2+2]));
>     }
>     return ret.data;
> ----
> 
> However this code still fails with a recent compiler:
> 
> source/vibe/core/net.d(181): Error: cannot cast expression ip[cast(ulong)(i
> * 2)..cast(ulong)(i * 2 + 2)] of type ubyte[] to ubyte[2]
> 
> Tested with "v2.067-devel-932e0a5" (From today, Feb 12).

See also Issue 13700, which covers the case.

--


More information about the Digitalmars-d-bugs mailing list