tupleof seems to break encapsulation

60rntogo 60rntogo at gmail.com
Fri Sep 4 10:16:47 UTC 2020


Consider the following code.

foo.d
---
module foo;

struct Foo
{
   private int i;
}
---

main.d
---
void main()
{
   import std.stdio;
   import foo;

   auto x = Foo();
   writeln(x);
   // ++x.i;
   ++x.tupleof[0];
   writeln(x);
}
---

As expected, the commented line does not compile. If I uncomment 
it, I get the error "no property i for type foo.Foo". However, 
the rest of the code compiles just fine and outputs:
---
Foo(0)
Foo(1)
---

This appears to defeat the purpose of declaring i private. What 
am I missing?


More information about the Digitalmars-d-learn mailing list