foreachを使ってRedBlackTreeの要素を列挙できるのは何故でしょうか
RedBlackTreeの要素は、次のようにforeachを使って列挙することができます。
auto t = new RedBlackTree!int;
// ...
foreach(elem; t) {
// ...
}
ところで、一般にforeachで要素を列挙するためには
opApplyを定義empty,front,popFrontを定義
のいずれかが必要だという認識なのですが、ソースコードを見る限り、RedBlackTreeはopApplyもpopFrontも持っていないようです。
RBRangeは2番目に挙げた3つのメソッドを持っていますが、foreachの;の右側に(RBRangeではなく)RedBlackTreeを置ける理由が分かりません。
(コンパイラ: DMD 2.088.0)