uint[3] not equivalent to void[12]?
H. S. Teoh
hsteoh at quickfur.ath.cx
Fri Feb 9 17:18:32 UTC 2018
On Fri, Feb 09, 2018 at 03:05:33PM +0000, Ralph Doncaster via Digitalmars-d-learn wrote:
> This seems odd to me. Is there a way I can make a function that takes
> an array of any type but only of a specific size in bytes?
>
> void.d(8): Error: function void.foo (void[12] arr) is not callable
> using argument types (uint[3])
> Failed: ["/usr/bin/dmd", "-v", "-o-", "void.d", "-I."]
> void foo(void [12] arr)
> {
> }
>
> void main()
> {
> uint[3] arr;
> foo(arr);
> }
You probably didn't mean to pass a static array, because those are
passed by value and may entail unnecessary copying. (Though in this
case, if you're only expecting 12 bytes, that's not that big of a
difference.)
But in any case, probably something like this would do:
void foo(void[] arr)
in { assert(arr.length == 12); }
do {
...
}
T
--
If creativity is stifled by rigid discipline, then it is not true creativity.
More information about the Digitalmars-d-learn
mailing list