Synopsis

template<class From, class To, class State>
    class codecvt
        : public locale::facet, codecvt_base {
public:
    typedef From intern_type;
    typedef To extern_type;
    typedef State state_type;
    explicit codecvt(size_t refs = 0);
    result in(State& state,
        const To *first1, const To *last1,
            const To *next1,
        From *first2, From *last2, From *next2);
    result out(State& state,
        const From *first1, const From *last1,
            const From *next1,
        To *first2, To *last2, To *next2);
    result unshift(State& state,
        To *first2, To *last2, To *next2);
    bool always_noconv() const throw();
    int max_length() const throw();
    int length(State& state,
        const To *first1, const To *last1,
            size_t _N2) const throw();
    int encoding() const throw();
    static locale::id id;
protected:
    ~codecvt();
    virtual result do_in(State& state,
        const To *first1, const To *last1,
            const To *next1,
        From *first2, From *last2, From *next2);
    virtual result do_out(State& state,
        const From *first1, const From *last1,
            const From *next1,
        To *first2, To *last2, To *next2);
    virtual result do_unshift(State& state,
        To *first2, To *last2, To *next2);
    virtual bool do_always_noconv() const throw();
    virtual int do_max_length() const throw();
    virtual int do_encoding() const throw();
    virtual int do_length(State& state,
        const To *first1, const To *last1,
            size_t len2) const throw();
    };