From 035eddda46dc44922a0950c838687e221865fbec Mon Sep 17 00:00:00 2001 From: Peter Alexander Date: Sun, 14 Oct 2012 23:58:53 +0100 Subject: [PATCH] splitter ddoc and constraint improvements. splitter requires a sliceable range, contradicting the ddoc. Additionally, one of the overloads requires a sliceable range, but omits this from the if-constraint. This commit mentions the sliceable constraint in the ddoc and tightens the constraints of the overload to require slicing. --- std/algorithm.d | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/std/algorithm.d b/std/algorithm.d index f90acf1d2..fd0a57e15 100644 --- a/std/algorithm.d +++ b/std/algorithm.d @@ -1898,7 +1898,7 @@ void swapFront(R1, R2)(R1 r1, R2 r2) // splitter /** Splits a range using an element as a separator. This can be used with -any range type, but is most popular with string types. +any sliceable range type, but is most popular with string types. Two adjacent separators are considered to surround an empty element in the split range. @@ -2138,10 +2138,11 @@ unittest /** Splits a range using another range as a separator. This can be used -with any range type, but is most popular with string types. +with any sliceable range type, but is most popular with string types. */ auto splitter(Range, Separator)(Range r, Separator s) -if (is(typeof(Range.init.front == Separator.init.front) : bool)) +if (is(typeof(Range.init.front == Separator.init.front) : bool) + && (hasSlicing!Range || isNarrowString!Range)) { static struct Result {