With effects equivalent to os << (const void*)nullptr.
Details
Diff Detail
Event Timeline
include/ostream | ||
---|---|---|
225 | Oh, common, I persuaded the committee to allow you to print a (null) and you don't do it... |
Other than the actual text being output, this LGTM.
I'ld like to see the changes I suggested in the test go in, but they're really minor.
include/ostream | ||
---|---|---|
225 | I think that (null) is a better thing to output here than 0x0. | |
test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/nullptr_t.pass.cpp | ||
72 | You could just say `assert(!sb.str().empty()) here; no need to save the string in a variable. | |
79 | Might as well check for a non-empty string here, too. |
include/ostream | ||
---|---|---|
225 | 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).) 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. |
include/ostream | ||
---|---|---|
225 | 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. |
include/ostream | ||
---|---|---|
225 | Your test code prints 0x0 0x0 on FreeBSD though. https://github.com/fmtlib/fmt/commit/b5fda1c90d94aeaf96081477c9bfe13789c00e03 |
Oh, common, I persuaded the committee to allow you to print a (null) and you don't do it...