Not convinced or grok'g doing both...  what is the benefit of adding the
std::to_string()'s?

On Fri, Sep 15, 2017 at 11:46 AM, Jacob Barrett <jbarr...@pivotal.io> wrote:

> On Fri, Sep 15, 2017 at 10:33 AM Mark Hanson <mhan...@pivotal.io> wrote:
>
> > class blobject
> > {
> >   bool blobBool;
> > };
> >
> >
> > namespace std {
> >       std::string to_String(blobject * blob)
> >       {
> >         return std::string("works");
> >       }
> > }
> >
> >
> > int main() {
> >
> >   blobject * blob = new blobject();
> >   std::string str = std::to_String(blob);
> >   std::cout << "Hello, World! " <<  "value = " << str << std::endl;
> >   return 0;
> > }
> > /Users/mhanson/CLionProjects/untitled1/cmake-build-debug/untitled1
> > Hello, World! value = works
> >
>
> Yes, this asserts it is possible, which was not in question. My assertion
> is that the specification forbids exporting code into the std namespace
> with very few exceptions.
>
> http://en.cppreference.com/w/cpp/language/extending_std
>
> In another review of the specification extending the std::to_string is
> allowed assuming that it is only done for user defined types and none of
> the std types. In our use case it would be allowed.
>
> I would suggest however that we keep Serializable::toString for consistency
> with previous API and implement:
> namespace std {
>   std::string to_string(const Serializable& object) {
>     return object.toString();
>   }
>   std::string to_string(const Serializable* object) {
>     return object->toString();
>   }
>   std::string to_string(const std::shared_ptr<Serializable>& object) {
>     return object->toString();
>   }
>   std::string to_string(const std::unique_ptr<Serializable>& object) {
>     return object->toString();
>   }
> }
>
> -Jake
>

Reply via email to