some implementations don't provide function bodies for the codecvt template clase - I need to check spec on this some implementations have an opaque definition of std::mbstate_t which means it's actually exceeding difficult to use :)