How to realize isSortedRange?

2014-08-20 Thread Alexandr Druzhinin via Digitalmars-d-learn
I need to ensure that range passed to function is SortedRange to use 
binary search. I did something like:


static if(!__traits(compiles,
{
ElementType!(typeof(data)) element;
auto d = data.trisect(element);
}
)) assert(0, DataRange shall be SortedRange);

It works for me, but in fact it checks if the type of 'data' have 
'trisect' method and conception of SortedRange is something more than 
having 'trisect' method.
	I remember there is(?) some way to get general type of template (i.e. 
SortedRange instead of SortedRange!int), but can not find it.


Re: How to realize isSortedRange?

2014-08-20 Thread Kagamin via Digitalmars-d-learn

http://dlang.org/phobos/std_traits.html#TemplateOf


Re: How to realize isSortedRange?

2014-08-20 Thread hane via Digitalmars-d-learn

On Wednesday, 20 August 2014 at 07:18:12 UTC, Kagamin wrote:

http://dlang.org/phobos/std_traits.html#TemplateOf


Or isInstanceOf.

static if (__traits(isSame, TemplateOf!R, SortedRange))
static if (isInstanceOf!(SortedRange, R))


Re: How to realize isSortedRange?

2014-08-20 Thread Alexandr Druzhinin via Digitalmars-d-learn

Thank you!