Thread overview |
---|
January 17, 2017 C++-style mutable members | ||||
---|---|---|---|---|
| ||||
Is there a way to mimic C++-style `mutable` members in D? |
January 17, 2017 Re: C++-style mutable members | ||||
---|---|---|---|---|
| ||||
Posted in reply to Nordlöw | 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++.
|
January 17, 2017 Re: C++-style mutable members | ||||
---|---|---|---|---|
| ||||
Posted in reply to ketmar | 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 ;)
|
January 17, 2017 Re: C++-style mutable members | ||||
---|---|---|---|---|
| ||||
Posted in reply to Nordlöw | 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. ;-)
|
January 17, 2017 Re: C++-style mutable members | ||||
---|---|---|---|---|
| ||||
Posted in reply to Nordlöw | 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);
}
----
|
Copyright © 1999-2021 by the D Language Foundation