GetUserPtr() passes (a copy of) a std::string object. This saves: a. effort making sure use cases conform to the method prototype, and b. having to copy it explicitly in GetUserPtr().