Warum werden Iostream-Sentry-Objekte im Standard "Cerberos" genannt?

8

Ich habe mich gefragt, was __cerb in libstdc++ von g++ bedeutet, und ich fand heraus, dass dies ein Kurzname für cerberos ist, wie im offiziellen C ++ - Standarddokument genannt.

§ 22.3.1 / 3:

  

[Beispiel: Ein Iostream operator<< könnte wie folgt implementiert werden:

%Vor%      

- Ende Beispiel]

Warum werden iostream sentry Objekte cerberos genannt, und was bedeutet cerberos eigentlich?

    
helami 01.03.2013, 23:22
quelle

1 Antwort

12

Cerberus war der dreiköpfige Hund 1 der die Tore der Hölle bewachte und diese behielt Eingeschlossen von der Überquerung zurück über den Fluss Styx. Wer auch immer diesen Abschnitt geschrieben hat, dachte an die griechische und / oder römische Mythologie und entschied, dass es ein geeigneter Name für einen lokalen variablen Posten wäre.

Warum es in os endet, kann man sich drei Szenarien vorstellen:

  1. Sie haben die Regeln für griechische und lateinische Nomen Deklinationen komplett vergessen und dachten, dass es so geschrieben wurde
  2. Ich habe die Regeln für griechische und lateinische Substantiv-Deklinationen komplett vergessen und weise darauf hin, dass es kein Problem gibt.
  3. Sie verschmelzen die Schreibweisen von Cerberus und Kerberos und bringen Cerberos den basic_stream-Wächter griechischer und römischer Abstammung zur Welt.

1. Anscheinend ist die Anzahl der Köpfe auf Cerberus variabel. Vielleicht wird dies besser ausgedrückt als "N-köpfiger Hund, wobei N größer als oder gleich 1 ist."

    
user7116 01.03.2013, 23:41
quelle