...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

Rangeを出力するwriteln

import std.stdio;
import std.algorithm;
import std.range;

template writeln(R) if (isInputRange!(R))
{
	void writeln(R r)
	{
		foreach (e; r)
			std.stdio.write(e);
		std.stdio.writeln();
	}
}

void main()
{
	{
		auto res = chain("a", "b");
		std.stdio.writeln(res); // ChainImpl!(immutable(char)[],immutable(char)[])
		writeln(res);           // ab
	}{
		auto res = chain("a".dup, "b");
		std.stdio.writeln(res); // ChainImpl!(char[],immutable(char)[])
		writeln(res);           // 9798
	}
}

うーん・・・自分で書いたwritelnがダメみたいだなあ.