import std.typecons;

interface It {}

class A {
 Rebindable!(const(It)) ireb; // ItがObjectじゃないためNG
 Rebindable!(const(A)) reb;
 const const(A) get() {
  return reb.opDot; // RebindableのopDotがconstじゃないためNG
 }
 Rebindable!(const(A))[string] assoc;
 void put(const(A) a) {
  // opAssignが呼ばれてしまい実行時エラー
  assoc["test"] = a;
 }
}

('A`) ウボァー