digitalmars.D.bugs - [Issue 12702] New: [FixIncluded] std.container.RedBlackTree's in
- via Digitalmars-d-bugs (33/33) May 04 2014 https://issues.dlang.org/show_...
https://issues.dlang.org/show_bug.cgi?id=12702 Issue ID: 12702 Summary: [FixIncluded] std.container.RedBlackTree's in operator is not const Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: minor Priority: P1 Component: Phobos Assignee: nobody puremagic.com Reporter: markisaa umich.edu Created attachment 1353 --> https://issues.dlang.org/attachment.cgi?id=1353&action=edit std.container with the indicated changes The "in" operator for std.container.RedBlackTree is not const. This seems inappropriate as it is only performing a 'checking' operation. The operation is semantically const, but this is not expressed in the definition. When I examine the code I also see no obvious reason why the current implementation cannot be happily adorned with const. I attempted an implementation myself and it seems to work properly and passes the existing unit tests. List of changes: 1) opBinaryRight "in" is now const. 2) _find is now inout and has its return type automatically deduced. 3) Local variables in _find are now declared with auto. 4) The getter left, right, and parent properties of RBNode are now inout and return inout(RBNode)*. I believe that was everything. A copy of std.container with my alterations (I also removed the module line at the top for testing) is attached. --
May 04 2014