std::ostream_iterator的なものを.
import std.stdio; import std.algorithm; //import std.range; struct TerminatorAdapter(Range, String)// if (isOutputRange!(Range, char)) // charだけじゃないんだけど... { Range r; String s; this(Range r, String s) { this.r = r; this.s = s; } void put(T)(T t) { r.put(t); r.put(s); } } TerminatorAdapter!(Range,String) terminatorAdapter(Range,String)(Range r, String s) { return TerminatorAdapter!(Range,String)(r,s); } void main() { copy(stdin.byLine(), terminatorAdapter(stdout.lockingTextWriter(), "[end of line]\n")); }
確かにStreamと同じように扱える.