2013-03-01 5 views
8

मैं सोच रहा था कि __cerb में libstdc++ में है, और मुझे पता चला कि यह cerberos के लिए आधिकारिक सी ++ मानक दस्तावेज़ में नामित एक छोटा नाम प्रतीत होता है।मानक में "cerberos" नामक iostream sentry ऑब्जेक्ट्स क्यों हैं?

§ 22.3.1/3:

[उदाहरण: एक iostream operator<< के रूप में लागू किया जा सकता:

template <class charT, class traits> 
basic_ostream<charT,traits>& 
operator<< (basic_ostream<charT,traits>& s, Date d) { 
                  //  !!!!!!!!!! 
    typename basic_ostream<charT,traits>::sentry cerberos(s); // <--- !! HERE !! 
                  //  !!!!!!!!!! 
    if (cerberos) { 
    ios_base::iostate err = ios_base::iostate::goodbit; 
    tm tmbuf; d.extract(tmbuf); 
    use_facet<time_put<charT,ostreambuf_iterator<charT,traits> > >(
     s.getloc()).put(s, s, s.fill(), err, &tmbuf, ’x’); 
    s.setstate(err);   // might throw 
    } 
    return s; 
} 

- अंत उदाहरण] iostream

क्यों हैं sentry ऑब्जेक्ट्स cerberos कहा जाता है, औरक्या करता है 210 वास्तव में मतलब है?

+0

तो बस एक गार्ड के लिए एक सामान्य नाम? और क्यों cerber ** ओ ** एस? – helami

+2

वह व्यक्ति जिसने उस नाम का उपयोग किया वह बेहद खुश होना चाहिए। – wilsonmichaelpatrick

उत्तर

12

Cerberus was the three headed dog1 who guarded the gates of hell, जो स्टाइक्स नदी पर वापस पार करने से फंस गए हैं उन्हें रखते हुए। जिसने लिखा है कि उस वर्ग ने ग्रीक और/या रोमन पौराणिक कथाओं को प्रशंसा की और फैसला किया कि यह स्थानीय परिवर्तनीय संत्री के लिए एक लागू नाम होगा।

कारण है कि यह ओएस में समाप्त होता है के रूप में, एक से तीन परिदृश्यों की कल्पना कर सकते हैं:

  1. वे पूरी तरह से ग्रीक और लैटिन संज्ञा declinations के लिए नियमों को भूल गया और सोचा कि यह कैसे लिखा जाता है
  2. मैं पूरी तरह से था ग्रीक और लैटिन संज्ञा की घोषणाओं के नियमों को भूल गए हैं और एक गैर-मुद्दे को इंगित कर रहे हैं।
  3. उन्होंने सेर्बरस और केर्बेरोस की वर्तनी को स्वीकार किया, जिससे ग्रीक और रोमन वंश के मूल_स्ट्रीम संवेदना सेर्बेरोस को जन्म दिया गया।

1. स्पष्ट रूप से सेर्बरस पर सिर की संख्या परिवर्तनीय है। शायद यह "एन-हेड कुत्ते के रूप में बेहतर व्यक्त किया गया है, जहां एन 1 से बड़ा या बराबर है।"

+1

या संभवतः 3. उन्होंने लैटिन और ग्रीक नामों को मिश्रित किया, * केर्बेरोस * और * सेर्बरस *। – duskwuff

+5

या 4, ओएस इस तथ्य का संदर्भ है कि वे ओस्ट्रीम लिख रहे हैं। –

संबंधित मुद्दे