読者です 読者をやめる 読者になる 読者になる

C++1z 非推奨だったiostreamのエイリアスを削除

C++

標準入出力ライブラリで、C++98のころから非推奨だった型の別名と関数の別名が、C++1zで削除されます。

まず、std::ios_baseクラスの以下のメンバ型が削除されます:

namespace std {
    class ios_base {
    public:
        typedef T1 io_state;
        typedef T2 open_mode;
        typedef T3 seek_dir;
        typedef implementation-defined streamoff;
        typedef implementation-defined streampos;
    };
}
  • ios_base::io_stateの代わりにios_base::iostateを使用します。
  • ios_base::open_modeの代わりにios_base::openmodeを使用します。
  • ios_base::seek_dirの代わりにios_base::seekdirを使用します。
  • ios_base::streamoffの代わりに、char_traits<CharT>::off_typeもしくはbasic_ios<CharT>::off_typeを使用します。(<iosfwd>で定義されているstd::streamoffは残ります)
  • ios_base::streamposの代わりに、char_traits<CharT>::pos_typeもしくはbasic_ios<CharT>::pos_typeを使用します。(<iosfwd>で定義されているstd::streamposは残ります)

std::basic_streambufクラスの以下のメンバ関数が削除されます:

namespace std {
    template <class charT, class traits = char_traits<charT> >
    class basic_streambuf {
    public:
        void stossc();
    };
}

このメンバ関数は、同クラスのメンバ関数であるパラメータなしのsbumpc()を呼び出しているだけです。

ios_baseクラスの別名型が削除されることにともない、それらの型をパラメータにとる関数が削除されます。

namespace std {
    template <class charT, class traits>
    class basic_ios {
    public:
        void clear(io_state state);
        void setstate(io_state state);
        void exceptions(io_state);
    };

    template <class charT, class traits = char_traits<charT> >
    class basic_streambuf {
    public:
        pos_type pubseekoff(off_type off, ios_base::seek_dir way,
                ios_base::open_mode which = ios_base::in | ios_base::out);
        pos_type pubseekpos(pos_type sp,
                ios_base::open_mode which);
    };

    template <class charT, class traits = char_traits<charT> >
    class basic_filebuf : public basic_streambuf<charT,traits> {
    public:
        basic_filebuf<charT,traits>* open(const char* s, ios_base::open_mode mode);
    };

    template <class charT, class traits = char_traits<charT> >
    class basic_ifstream : public basic_istream<charT,traits> {
    public:
        void open(const char* s, ios_base::open_mode mode);
    };

    template <class charT, class traits = char_traits<charT> >
    class basic_ofstream : public basic_ostream<charT,traits> {
    public:
        void open(const char* s, ios_base::open_mode mode);
    };
}

参照

お断り

この記事の内容は、C++1zが正式リリースされる際には変更される可能性があります。正式リリース後には、C++日本語リファレンスサイトcpprefjpの以下の階層の下に解説ページを用意する予定です。