Esse padrão de proteção de acesso orientado a chave é um idioma conhecido?

Matthieu M. trouxe um padrão de proteção de acesso emesta resposta que eu já tinha visto antes, mas nunca considerei um padrão:

class SomeKey { 
    friend class Foo;
    SomeKey() {} 
    // possibly make it non-copyable too
};

class Bar {
public:
    void protectedMethod(SomeKey);
};

Aqui apenas umfriend da classe chave tem acesso aprotectedMethod():

class Foo {
    void do_stuff(Bar& b) { 
        b.protectedMethod(SomeKey()); // fine, Foo is friend of SomeKey
    }
};

class Baz {
    void do_stuff(Bar& b) {
        b.protectedMethod(SomeKey()); // error, SomeKey::SomeKey() is private
    }
};

Permite um controle de acesso mais granular do que fazerFoo a friend doBar e evita padrões de proxy mais complicados.

Alguém sabe se essa abordagem já tem um nome, ou seja, é um padrão conhecido?

questionAnswers(4)

yourAnswerToTheQuestion