Currently std.typecons.Rebindable.get() is not a const function. This makes the a rebindable member not usable in a const function, e.g. ------------------------------------------ import std.typecons; class Y { string t; } class X { Rebindable!(const(Y)) y; override string toString() const { return y.t; // Error } } ------------------------------------------ x.d(8): Error: function std.typecons.Rebindable!(const(Y)).Rebindable.get () is not callable using argument types () ------------------------------------------ There should be a const get() method, e.g. diff --git a/std/typecons.d b/std/typecons.d index 7d130ca..bbf7615 100644 --- a/std/typecons.d +++ b/std/typecons.d @@ -920,6 +920,9 @@ template Rebindable(T) if (is(T == class) || is(T == interface) || isArray!(T)) @property ref T get() { return original; } + @property const(T) get() const { + return original; + } alias get this; }
https://github.com/D-Programming-Language/phobos/commit/cf62cd2b3d2b0c4d92536cafbec70427f46a68d6