hel*_*ami 8 c++ naming iostream naming-conventions
我想知道什么__cerb的意思libstdc++的g++,我发现,这似乎是一个简短的名称cerberos作为官方C++标准文档命名.
§22.3.1/ 3:
[示例:iostream
operator<<可能实现为:Run Code Online (Sandbox Code Playgroud)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; }- 结束例子]
为什么sentry调用iostream 对象cerberos,cerberos实际意味着什么?
use*_*116 12
塞伯鲁斯是三头狗1,守护着地狱之门,让那些被困在里面的人不再穿过冥河.谁写了这一部分想象希腊和/或罗马神话,并决定它将是一个适用于当地变量哨兵的名称.
至于为什么它以os结尾,可以想象三种情况:
显然,塞伯鲁斯的头数是多变的.也许这更好地表达为"N头狗,其中N大于或等于1".