C++'s std::rotate

monarch_dodra via Digitalmars-d digitalmars-d at puremagic.com
Fri Aug 22 09:28:24 PDT 2014


On Monday, 11 August 2014 at 14:45:09 UTC, Andrei Alexandrescu 
wrote:
> On 8/11/14, 2:11 AM, "Nordlöw" wrote:
>> On Monday, 11 August 2014 at 06:56:52 UTC, Dragos Carp wrote:
>>> bool sliceOf(T)(in T[] whole, in T[] slice)
>>> {
>>>    return whole.ptr <= slice.ptr &&
>>>        whole.ptr + slice.length <= whole.ptr + slice.length;
>>> }
>>
>> Shouldn't the function arguments of sliceOf be reversed to 
>> given a more
>> intuitive UCFS as
>>
>>     if (slice.sliceOf(whole) { ... }
>
> isSliceOf -> yum

While "sameHead" and "sameTail" *could* have a "good enough" 
generic implementation for ranges, there is absolutely no way to 
make "isSliceOf" or "overlap" work for a generic range.

That said, sameHead and sameTail is just the iterator equivalent 
of "first1 == first2" and "last1 == last2", which is used a lot 
with iterators. You rarely see operator "<" used with iterators 
though, so I have doubts about why those two functions (isSliceOf 
and overlap) would actually be of any use.


More information about the Digitalmars-d mailing list