> It's inaccessible (at least as long as the struct isn't static - I'm not sure about when it's static), which means that any place that you need init, you're screwed. filter would be the first example that I'd give given the problems that I've had with it in the past, but it looks like someone moved its implementation into a private struct at module scope, which should have fixed the problem.

If you declare it as static, then it is 100% guaranteed static. That or the code won't compile if that's not possible. Map had the problems you speak of. It was fixed here:
https://github.com/D-Programming-Language/phobos/commit/cedddcd23e00d0a4144ed7c507422b8a41bc5900#std/algorithm.d

But as you can see, Result had not been declared static. I rememeber debugging this specific issue, and Result had a frame pointer inside it.

I'm 100% confident we could move all these things back into their respective owners if they were declared static. I've had a mind to do this for a while now actually.

--------
Back to topic: I don't mind if Only is not exposed publicly. jmdavis makes a good point.