www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - C++-style mutable members

reply =?UTF-8?B?Tm9yZGzDtnc=?= <per.nordlow gmail.com> writes:
Is there a way to mimic C++-style `mutable` members in D?
Jan 17
next sibling parent reply ketmar <ketmar ketmar.no-ip.org> writes:
On Tuesday, 17 January 2017 at 20:21:34 UTC, Nordlöw wrote:
 Is there a way to mimic C++-style `mutable` members in D?
sure: don't use `const`. otherwise — no, there is simply no way to «mimic» 'em due to completely different meaning of `const` in D and C++.
Jan 17
parent reply =?UTF-8?B?Tm9yZGzDtnc=?= <per.nordlow gmail.com> writes:
On Tuesday, 17 January 2017 at 20:47:35 UTC, ketmar wrote:
 Is there a way to mimic C++-style `mutable` members in D?
sure: don't use `const`. otherwise — no, there is simply no way to «mimic» 'em due to completely different meaning of `const` in D and C++.
I'm aware of the difference. I'm just making sure there are no ways out of the type system ;)
Jan 17
parent ketmar <ketmar ketmar.no-ip.org> writes:
On Tuesday, 17 January 2017 at 20:50:34 UTC, Nordlöw wrote:
 On Tuesday, 17 January 2017 at 20:47:35 UTC, ketmar wrote:
 Is there a way to mimic C++-style `mutable` members in D?
sure: don't use `const`. otherwise — no, there is simply no way to «mimic» 'em due to completely different meaning of `const` in D and C++.
I'm aware of the difference. I'm just making sure there are no ways out of the type system ;)
besides brutally raping it with `cast` is accessor methods — no. ;-)
Jan 17
prev sibling parent Namespace <rswhite4 gmail.com> writes:
On Tuesday, 17 January 2017 at 20:21:34 UTC, Nordlöw wrote:
 Is there a way to mimic C++-style `mutable` members in D?
You could store a ptr to the member outside: ---- import std.stdio; private int* _pid; struct A { int id; this(int id) { this.id = id; _pid = &this.id; } void foo() const { (*_pid)++; } } void main() { A a = A(42); a.foo(); writeln(a.id); } ----
Jan 17