lichray added inline comments.
================ Comment at: include/ostream:225 + basic_ostream& operator<<(nullptr_t) + { return *this << (const void*)0; } + ---------------- K-ballo wrote: > Quuxplusone wrote: > > mclow.lists wrote: > > > lichray wrote: > > > > Oh, common, I persuaded the committee to allow you to print a `(null)` > > > > and you don't do it... > > > I think that `(null)` is a better thing to output here than `0x0`. > > Are you two implying that > > > > *this << (const void *)0; > > > > does *not* print `(null)`? It certainly should, IMO. (I mean, it'll call > > `num_put` for `void*` in the current locale, but I would naturally expect > > that to print `(null)`.) > > Anyway, whether the current locale prints null as `(null)` or not, there is > > great potential utility in using the same format for all pointers, as > > K-ballo is doing here. I'd really like to be able to > > > > std::ostringstream oss; > > oss << nullptr; // equivalently: oss << (void*)0; > > void *p; > > std::istringstream(oss.str()) >> p; // should read in a null pointer, > > not derp out > > > > FWIW, it looks like libc++ currently *does* print null pointers as `(nil)`, > > which is not quite the same thing as `(null)`. libstdc++ prints them as `0`. > > https://wandbox.org/permlink/yAM6tjMzvEX9HhhE > It's been a while now, but I seem to recall that the reason we settled on > `(*this) << (const void*)0` was precisely so that it would go through > `num_put`, as the rest of the pointers do. As I read back on the > specification, however, I am no longer sure that such an implementation is > conforming. Maybe if we were to call the facet directly... > > I am no longer interested in this issue. If anyone wants to take over control > I would be happy to yield it; otherwise, I'll implement whatever I'm > instructed to. Your test code prints 0x0 0x0 on FreeBSD though. If reliable round-tripping is the goal, maybe we can enforce printing `(nil)`? fmtlib does this as well: https://github.com/fmtlib/fmt/commit/b5fda1c90d94aeaf96081477c9bfe13789c00e03 https://reviews.llvm.org/D33776 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits