codecvt for float
floatストリームをcharストリームに書き出すためには量子化が必要です。これはIostreamsのコード変換に似ています。
試しにcodecvtを作ってみました。
namespace std { template<> class codecvt<char, hamigaki::audio::float_type, hamigaki::audio::float_state> : public locale::facet, public codecvt_base { public: typedef char intern_type; typedef hamigaki::audio::float_type extern_type; typedef hamigaki::audio::float_state state_type; // 以下略 }; } // namespace std
変換状態クラスとしてfloat_stateを導入しました。
実際にテストプログラムをコンパイルすると、Boost.Iostreams内でchar_trais<T>::int_typeの代わりにintを使っている箇所があってうまくいきません。(3/25追記: narrowとwideが逆でした)
前途多難です。