Create variable for RedBlackTree range

Meta jared771 at gmail.com
Wed May 2 17:04:49 UTC 2018


On Wednesday, 2 May 2018 at 10:39:29 UTC, ag0aep6g wrote:
> On 04/28/2018 06:36 PM, Gerald wrote:
>> What is the appropriate way to create a variable for the range 
>> returned by RedBlackTree lowerBound and upperBound. For 
>> example, given this code:
>> 
>> ```
>> RedBlackTree!long promptPosition = redBlackTree!long();
>> 
>> long row = to!long(vte.getVadjustment().getValue());
>> RBRange!(RBNode!long*) range;
> [...]
>> }
>> ```
>> 
>> The second line where I declare the range variable as 
>> RBRange!(RBNode!long*) the compiler complains with the 
>> following warning:
>> 
>> Deprecation: std.container.rbtree.RBRange(N) is not visible 
>> from module terminal
>> 
>> Which makes sense since RBRange is a private struct.
>
> RedBlackTree also has public range types: Range, ConstRange, 
> ImmutableRange. And `RedBlackTree!long.Range` is an alias for 
> `RBRange!(RBNode!long*)`.
>
> So:
>
>     RedBlackTree!long promptPosition = redBlackTree!long();
>     RedBlackTree!long.Range range;

For completeness' sake, and if you don't want to re-specify the 
template parameters you passed to RedBlackTree, you can write:

promptPosition.Range range;


More information about the Digitalmars-d-learn mailing list