[Issue 5898] New: [const] std.typecons.Rebindable.get() should be const-correct

d-bugmail at puremagic.com d-bugmail at puremagic.com
Wed Apr 27 07:54:16 PDT 2011


http://d.puremagic.com/issues/show_bug.cgi?id=5898

           Summary: [const] std.typecons.Rebindable.get() should be
                    const-correct
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Keywords: patch, rejects-valid
          Severity: normal
          Priority: P2
         Component: Phobos
        AssignedTo: nobody at puremagic.com
        ReportedBy: kennytm at gmail.com


--- Comment #0 from kennytm at gmail.com 2011-04-27 07:50:31 PDT ---
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;
         }

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list