On Thursday, 16 April 2015 at 20:08:30 UTC, H. S. Teoh wrote:
On Thu, Apr 16, 2015 at 07:55:52PM +0000, Bayan Rafeh via Digitalmars-d-learn wrote:
Executing this code:

import std.container.array;
import std.stdio;


int main() {
        writeln(Array!int([1, 2]));
        return 0;
}

outputs the following:

Array!int(RefCounted!(Payload,
cast(RefCountedAutoInitialize)0)(RefCountedStore(B694B0)))


The strange thing is that this works fine:

import std.container.array;
import std.stdio;

int main() {
        writeln(Array!int([1, 2])[0..$]);
        return 0;
}

[1, 2]

How am I supposed to interpret this?

Try slicing the Array before passing it to writeln?

        writeln(Array!int([1, 2])[]);

Basically, there is a distinction between a container and a range that spans the items in a container. The conventional syntax for getting a
range over a container's contents is the slicing operator [].


T


Thanks that works great, though I still don't understand where the controversy is coming from. There was a mention of causing confusion between containers and ranges. How so?

Reply via email to