On Thursday, 8 September 2016 at 08:44:54 UTC, Lodovico Giaretta wrote:
On Thursday, 8 September 2016 at 08:20:49 UTC, Jon Degenhardt wrote:

[snip]


I think that

auto x = new Derived!(typeof(stdout.lockingTextWriter()))(); // note the parenthesis

should work.



But usually, you save the writer inside the object and make a free function called `derived` (same as the class, but with lowercase first). You define it this way:

auto derived(OutputRange)(auto ref OutputRange writer)
{
    auto result = new Derived!OutputRange();
result.writer = writer; // save the writer in a field of the object
    return result;
}

void main()
{
    auto x = derived(stdout.lockingTextWriter);
x.writeString("Hello world"); // the writer is saved in the object, no need to pass it
}

Yes, the form you suggested works, thanks! And thanks for the class structuring suggestion, it has some nice properties.

Reply via email to