RedBlackTreeの要素は、次のようにforeachを使って列挙することができます。

auto t = new RedBlackTree!int;
// ...
foreach(elem; t) {
  // ...
} 

ところで、一般にforeachで要素を列挙するためには

  • opApplyを定義
  • empty, front, popFrontを定義

のいずれかが必要だという認識なのですが、ソースコードを見る限り、RedBlackTreeopApplypopFrontも持っていないようです。

RBRangeは2番目に挙げた3つのメソッドを持っていますが、foreach;の右側に(RBRangeではなく)RedBlackTreeを置ける理由が分かりません。

(コンパイラ: DMD 2.088.0)