| Thread overview | ||||||
|---|---|---|---|---|---|---|
|
August 20, 2014 How to realize isSortedRange? | ||||
|---|---|---|---|---|
| ||||
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.
| ||||
August 20, 2014 Re: How to realize isSortedRange? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Alexandr Druzhinin | http://dlang.org/phobos/std_traits.html#TemplateOf | |||
August 20, 2014 Re: How to realize isSortedRange? | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Kagamin | 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))
| |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply