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)