| |
| Posted by Steven Schveighoffer in reply to Paul Backus | PermalinkReply |
|
Steven Schveighoffer
Posted in reply to Paul Backus
| On 11/28/22 10:37 PM, Paul Backus wrote:
> On Tuesday, 29 November 2022 at 03:03:37 UTC, Steven Schveighoffer wrote:
> The problem is that there's no syntax to "tail-modify" a type other than a pointer or an array. This is the biggest problem with properly using const on ranges (it doesn't prevent using const containers, or prevent ranges to const data, it just prevents taking a range to a mutable container and iterating it via a const parameter).
I think I've been bringing this problem up for 10 years. It would be a huge win to get it solved.
The thing is, we pretty much know what the solution is. In the general case, solving this requires user-defined implicit conversions, because in the general case only the user has the knowledge necessary to establish the correspondence between a templated type's structure (e.g., "the head-mutable version of const(Foo!T) ") and its name (e.g., Foo!(const(T)) ).
This is not how I would solve it. I would solve it in the general case, with a new syntax.
-Steve
|