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