I think you can drop the const char *const version of this as you'll only ever call it on a std::string anyway, plus most of the routines further down either can be trivially convered from the std::string or will take a copy anyway.