On 9/25/20 3:43 AM, 60rntogo wrote:
On Wednesday, 23 September 2020 at 19:27:13 UTC, Steven Schveighoffer
wrote:
This is a bug in the language.
Is this a known bug? If not, it should be reported.
I don't know, you can search for and report it here:
https://issues.dlang.org
I came up with an answer to my original question that sort of works:
---
module foo;
struct Foo
{
private int x;
}
int x(Foo f)
{
return f.x;
}
---
The downside is that if I don't want to import all of foo at once, then
I have to import both Foo and x, but then I can read x from outside the
module and modify it form inside as I wanted. Are there any drawbacks of
this approach that I'm not seeing?
Wow, this is actually quite clever! I think it's a very valid solution.
The only thing I would caution is that it takes Foo by value, which
means it's going to make a copy of everything. Your toy example, that's
OK, but if Foo is complex or has a significant copy constructor, it
might be slow.
You can use auto ref to alleviate that:
int x()(auto ref Foo f) // needs to be a template for auto ref to work
-Steve