On Thursday, 15 July 2021 at 18:11:30 UTC, evilrat wrote:
On Thursday, 15 July 2021 at 17:49:06 UTC, Tejas wrote:

I'm sorry, I should've explicitly mentioned I'm interested in learning how to do friend injection in D.

I know that access specifiers operate at module scope, seen a few posts about that here already.
Thank you for answering though.

Probably the only way is CRTP (unlikely) or mixin that access internals. Both will be limited and cumbersome to use though.

Additionally there is "package" visibility kind that takes optional package name to give access to specific package.

https://dlang.org/spec/grammar.html#attributes (under visibility attributes)

I rarely use package visibility so might be incorrect, but here an example anyway.
```d
module somepackage.somemod;
struct A
{
  private int x; // only accessible from same module
  package int y; // accessible from any module in 'somepackage'
package(otherpackage) int z; // accessible from 'otherpackage' package
}
```

CRTP and mixins are our best solution against multiple inheritance. Doubt they'll help with friend injection.

I also could only think of package specifiers for access control, but wondered whether it could be drilled down to a specific module, rather than package level.

you think ``` package(otherpackage.specific_module)``` is valid D code?

Thanks for replying, much appreciated!

Reply via email to