8

of は何__cerbを意味するのだろうと思っていたところ、公式の C++ 標準ドキュメントに記載されているように、これは の短縮名のようです。libstdc++g++cerberos

§ 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;
}

— 終了例 ]

iostreamsentryオブジェクトが と呼ばれる理由とcerberoscerberos実際の意味は何ですか?

4

1 に答える 1