Apparently this key-oriented access-protection pattern:
class SomeKey { friend class Foo; SomeKey() {} // possibly non-copyable too }; class B
I like, in decreasing preference:
I moved away from the key-lock/key-keyhole naming scheme to the pass naming scheme, which grew on me.