[Issue 6695] typeof(this) does not take into account const/immutable attributes inside member functions

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue Sep 20 08:20:08 PDT 2011


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



--- Comment #2 from luka8088 <luka8088 at owave.net> 2011-09-20 08:19:42 PDT ---
The actual problem is:


import std.stdio;

immutable struct a {
  b b1;
}

struct b {
  /*
    void c () { }
      case 1 => Error: function b.c () is not callable using argument types ()
immutable
    void c () immutable { }
     case 2 => Error: function b.c () immutable is not callable using argument
types ()
  */
  void c () { }
}
void main () {

  a a1;
  b b1;

  a1.b1.c(); // case 1
  b1.c();    // case 2

}



Lets say there is a struct b that can be independent and is mutable. On the
other hand we have struct a that has b immutable, by some reason immutable is
not inherited by void c () { }, so by trying to call a1.b1.c(); compiler throws
Error: function b.c () is not callable using argument types () immutable

I also tried a work-around by making void c () immutable { }, but then
independent usage of b throws Error: function b.c () immutable is not callable
using argument types ()


The reason for trying typeof(this) is I was trying to make two functions:
  void c () if (is(typeof(this) == b)) { }
  void c () if (is(typeof(this) == immutable(b))) immutable { }
but since typeof(this) does not indicate immutable I found no work-around.

Until this is resolved, is there any work-around for this situation... or am I
doing something wrong ?

-- 
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