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が逆でした)
前途多難です。