On 11/09/2015 01:48 AM, J.Frank wrote:
My question is now:
How can I make this work without using deprecated stuff?


import std.cstream;

void foo(InputStream in_stream, OutputStream out_stream)
{
//    in_stream.seek(3); // compile error - good :)

     char[] line;
     while ((line = in_stream.readLine()) !is null)
         out_stream.writeLine(line);
}

void main(string[] args)
{
     foo(din, dout);
}


You don't need the template constraints but it is good practice:

import std.stdio;
import std.range;

void foo(I, O)(I in_stream, O out_stream)
        if (isInputRange!I &&
            isOutputRange!(O, ElementType!I)) {

    // in_stream.seek(3); // compile error - good :)

    foreach (element; in_stream) {
        out_stream.put(element);
    }
}

void main(string[] args)
{
    // Also consider .byLine, which is faster and risky
    foo(stdin.byLineCopy,
        stdout.lockingTextWriter);
}

Ali

Reply via email to