result do_out(
  stateT& state,
  const internT* from, const internT* from_end, const internT*& from_next,
  externT* to, externT* to_end, externT*& to_next) const;
result do_in(
  stateT& state,
  const externT* from, const externT* from_end, const externT*& from_next,
  internT* to, internT* to_end, internT*& to_next) const;
| Value | Meaning | |
| ok | completed the conversion | |
| partial | not all source characters converted | |
| error | encountered a character in [from, from_end)
that cannot be converted | |
| noconv | internT and externT are the same type, and input
sequence is identical to converted sequence | 
result do_unshift(stateT& state, externT* to, externT* to_end, externT*& to_next) const;
| Value | Meaning | |
| ok | completed the sequence | |
| partial | space for more than to_end - to destination elements was needed
to terminate a sequence given the value of state | |
| error | an unspecified error has occurred | |
| noconv | no termination is needed for this state_type | 
int do_encoding() const noexcept;
bool do_always_noconv() const noexcept;
int do_length(stateT& state, const externT* from, const externT* from_end, size_t max) const;
int do_max_length() const noexcept;