Thread overview
new static array
Sep 01, 2015
anonymous
Sep 02, 2015
Ali Çehreli
Sep 02, 2015
anonymous
September 01, 2015
Hello,

I tried to send a string[4] with std.concurrency:

import std.concurrency;
import std.stdio;
void fun() {
	receive((string[4] data) { writeln(data);});
}

void main() {
	string[4] data;
	auto tid = spawn(&fun);
	send(tid, data);
}

I got (dmd 2.068)
/usr/include/dmd/phobos/std/variant.d(633): Error: new can only create structs, dynamic arrays or class objects, not string[4]'s
[...]

with int[4] it compiles and runs. int[][4] fails. Is this a bug?

Simple workaround: send a slice.
September 02, 2015
On 09/01/2015 09:47 AM, anonymous wrote:> Hello,
>
> I tried to send a string[4] with std.concurrency:
>
> import std.concurrency;
> import std.stdio;
> void fun() {
>      receive((string[4] data) { writeln(data);});
> }
>
> void main() {
>      string[4] data;
>      auto tid = spawn(&fun);
>      send(tid, data);
> }
>
> I got (dmd 2.068)
> /usr/include/dmd/phobos/std/variant.d(633): Error: new can only create
> structs, dynamic arrays or class objects, not string[4]'s
> [...]
>
> with int[4] it compiles and runs. int[][4] fails. Is this a bug?

I think so.

> Simple workaround: send a slice.

Another one: Wrap the array in a struct:

struct Data
{
    string[4] s;
}

Ali

September 02, 2015
On Wednesday, 2 September 2015 at 06:04:40 UTC, Ali Çehreli wrote:
> > with int[4] it compiles and runs. int[][4] fails. Is this a
> bug?
>
> I think so.

https://issues.dlang.org/show_bug.cgi?id=15004
may related to
https://issues.dlang.org/show_bug.cgi?id=10740