digitalmars.D.learn - mutable reference to const object
- Benjamin Thaut (7/7) Oct 12 2010 I want to have a mutable reference to a const object. So that I can
- Denis Koroskin (9/13) Oct 12 2010 For pointers:
- Jonathan M Davis (9/13) Oct 12 2010 Use Rebindable!() in std.typecons. It's a struct which can hold a const ...
- Jesse Phillips (3/9) Oct 12 2010 What I have heard is that it can't be done syntactically for references....
- Jonathan M Davis (7/22) Oct 12 2010 Yes, you can do it with pointers, but not with references, and it causes...
- Steven Schveighoffer (10/37) Oct 14 2010 If someone were to do the work, and the syntax was bearable, it might be...
I want to have a mutable reference to a const object. So that I can reasign the reference but can not modifiy the object. Is this possible in D 2.0? I found tailconst in the const FAQ but as it is not implemented in D 2.0 I'm clueless how to realize this. -- Kind Regards Benjamin Thaut
Oct 12 2010
On Tue, 12 Oct 2010 13:07:59 +0400, Benjamin Thaut <code benjamin-thaut.de> wrote:I want to have a mutable reference to a const object. So that I can reasign the reference but can not modifiy the object. Is this possible in D 2.0? I found tailconst in the const FAQ but as it is not implemented in D 2.0 I'm clueless how to realize this.For pointers: const(int)* c = new int(); c = new int(); // reassign For references: import std.typecons; Rebindable!(Object) o = new Object(); o = new Object();
Oct 12 2010
On Tuesday 12 October 2010 02:07:59 Benjamin Thaut wrote:I want to have a mutable reference to a const object. So that I can reasign the reference but can not modifiy the object. Is this possible in D 2.0? I found tailconst in the const FAQ but as it is not implemented in D 2.0 I'm clueless how to realize this.Use Rebindable!() in std.typecons. It's a struct which can hold a const or immutable object. When you want to reassign it, you merely assign it the new reference and a new struct is created to replace it. Unfortunately, at this point, tail const has pretty much been decided to be too difficult implement and/or too difficult to do cleanly, so it's not in D and likely never will be. If it's mentioned in the online docs, the docs need to be updated. It's been a long time since there was any kind of tail const in D. - Jonathan M Davis
Oct 12 2010
Jonathan M Davis Wrote:Unfortunately, at this point, tail const has pretty much been decided to be too difficult implement and/or too difficult to do cleanly, so it's not in D and likely never will be. If it's mentioned in the online docs, the docs need to be updated. It's been a long time since there was any kind of tail const in D. - Jonathan M DavisWhat I have heard is that it can't be done syntactically for references. As Denis shows you can do it with points (and arrays) but not object references. There are many syntax suggestion threads so I suggest search for them before bring it up again.
Oct 12 2010
On Tuesday, October 12, 2010 15:27:41 Jesse Phillips wrote:Jonathan M Davis Wrote:Yes, you can do it with pointers, but not with references, and it causes problems for stuff like ranges. There have been several discussions on it over time, and Walter has pretty much said that it's not a feature that's going to happen. He spent too much time on it before without success to want to try at it again. - Jonathan M DavisUnfortunately, at this point, tail const has pretty much been decided to be too difficult implement and/or too difficult to do cleanly, so it's not in D and likely never will be. If it's mentioned in the online docs, the docs need to be updated. It's been a long time since there was any kind of tail const in D. - Jonathan M DavisWhat I have heard is that it can't be done syntactically for references. As Denis shows you can do it with points (and arrays) but not object references. There are many syntax suggestion threads so I suggest search for them before bring it up again.
Oct 12 2010
On Tue, 12 Oct 2010 18:54:49 -0400, Jonathan M Davis <jmdavisProg gmx.com> wrote:On Tuesday, October 12, 2010 15:27:41 Jesse Phillips wrote:If someone were to do the work, and the syntax was bearable, it might be considered. I think Walter no longer wants to accept any ideas without proof that they will work -- he's already worked enough on trying to implement tail-const. I personally think tail const is going to be a very important feature that will not be solvable via the library. Tail-const ranges are going to be very important when it comes to things like collections. -SteveJonathan M Davis Wrote:Yes, you can do it with pointers, but not with references, and it causes problems for stuff like ranges. There have been several discussions on it over time, and Walter has pretty much said that it's not a feature that's going to happen. He spent too much time on it before without success to want to try at it again.Unfortunately, at this point, tail const has pretty much been decidedtobe too difficult implement and/or too difficult to do cleanly, so it's not in D and likely never will be. If it's mentioned in the onlinedocs,the docs need to be updated. It's been a long time since there was any kind of tail const in D. - Jonathan M DavisWhat I have heard is that it can't be done syntactically for references. As Denis shows you can do it with points (and arrays) but not object references. There are many syntax suggestion threads so I suggest search for them before bring it up again.
Oct 14 2010