Merge pull request #49 from kyllingstad/joiner-input-range

std.algorithm.joiner() should only require an input range
This commit is contained in:
Andrei Alexandrescu 2011-05-16 07:12:10 -07:00
commit d1d81245ea

View file

@ -2159,7 +2159,7 @@ assert(equal(joiner(["Mary", "has", "a", "little", "lamb"], "..."),
----
*/
auto joiner(RoR, Separator)(RoR r, Separator sep)
if (isForwardRange!RoR && isInputRange!(ElementType!RoR)
if (isInputRange!RoR && isInputRange!(ElementType!RoR)
&& isForwardRange!Separator
&& is(ElementType!Separator : ElementType!(ElementType!RoR)))
{
@ -2289,6 +2289,13 @@ unittest
"Mary...has...a...little...lamb"));
}
unittest
{
// joiner() should work for non-forward ranges too.
InputRange!string r = inputRangeObject(["abc", "def"]);
assert (equal(joiner(r, "xyz"), "abcxyzdef"));
}
auto joiner(RoR)(RoR r)
if (isInputRange!RoR && isInputRange!(ElementType!RoR))
{