diff options
| author | Marshall Clow <mclow.lists@gmail.com> | 2019-07-01 16:20:25 +0000 |
|---|---|---|
| committer | Marshall Clow <mclow.lists@gmail.com> | 2019-07-01 16:20:25 +0000 |
| commit | 3c125fe821cc0306dbe9820595a06e8b5e502a2c (patch) | |
| tree | ea1ffcf36702654309436e1a86fd6ef9520c86fa | |
| parent | 62d64b0c30880ed2d3623cc78c8daedb6ba0e6b7 (diff) | |
| download | bcm5719-llvm-3c125fe821cc0306dbe9820595a06e8b5e502a2c.tar.gz bcm5719-llvm-3c125fe821cc0306dbe9820595a06e8b5e502a2c.zip | |
Implement LWG2221: 'Formatted output for nullptr_t' Reviewed as: https://reviews.llvm.org/D63053
llvm-svn: 364802
| -rw-r--r-- | libcxx/include/ostream | 5 | ||||
| -rw-r--r-- | libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters/streambuf.pass.cpp | 7 | ||||
| -rw-r--r-- | libcxx/www/cxx1z_status.html | 2 |
3 files changed, 13 insertions, 1 deletions
diff --git a/libcxx/include/ostream b/libcxx/include/ostream index b20ac34a3d8..e6cf9c970f7 100644 --- a/libcxx/include/ostream +++ b/libcxx/include/ostream @@ -56,6 +56,7 @@ public: basic_ostream& operator<<(long double f); basic_ostream& operator<<(const void* p); basic_ostream& operator<<(basic_streambuf<char_type,traits>* sb); + basic_ostream& operator<<(nullptr_t); // 27.7.2.7 Unformatted output: basic_ostream& put(char_type c); @@ -218,6 +219,10 @@ public: basic_ostream& operator<<(const void* __p); basic_ostream& operator<<(basic_streambuf<char_type, traits_type>* __sb); + _LIBCPP_INLINE_VISIBILITY + basic_ostream& operator<<(nullptr_t) + { return *this << "nullptr"; } + // 27.7.2.7 Unformatted output: basic_ostream& put(char_type __c); basic_ostream& write(const char_type* __s, streamsize __n); diff --git a/libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters/streambuf.pass.cpp b/libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters/streambuf.pass.cpp index daf5ba102a8..af411157e9c 100644 --- a/libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters/streambuf.pass.cpp +++ b/libcxx/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters/streambuf.pass.cpp @@ -67,6 +67,13 @@ int main(int, char**) os << &sb2; assert(sb.str() == "testing..."); } + { // LWG 2221 - nullptr + testbuf<char> sb; + std::ostream os(&sb); + os << nullptr; + assert(sb.str().size() != 0); + LIBCPP_ASSERT(sb.str() == "nullptr"); + } return 0; } diff --git a/libcxx/www/cxx1z_status.html b/libcxx/www/cxx1z_status.html index 94950ded285..5427d488046 100644 --- a/libcxx/www/cxx1z_status.html +++ b/libcxx/www/cxx1z_status.html @@ -364,7 +364,7 @@ <tr><td></td><td></td><td></td><td></td></tr> <tr><td><a href="https://wg21.link/LWG2062">2062</a></td><td>Effect contradictions w/o no-throw guarantee of std::function swaps</td><td>Issaquah</td><td>Complete</td></tr> <tr><td><a href="https://wg21.link/LWG2166">2166</a></td><td>Heap property underspecified?</td><td>Issaquah</td><td></td></tr> - <tr><td><a href="https://wg21.link/LWG2221">2221</a></td><td>No formatted output operator for nullptr</td><td>Issaquah</td><td></td></tr> + <tr><td><a href="https://wg21.link/LWG2221">2221</a></td><td>No formatted output operator for nullptr</td><td>Issaquah</td><td>Complete</td></tr> <tr><td><a href="https://wg21.link/LWG2223">2223</a></td><td>shrink_to_fit effect on iterator validity</td><td>Issaquah</td><td>Complete</td></tr> <tr><td><a href="https://wg21.link/LWG2261">2261</a></td><td>Are containers required to use their 'pointer' type internally?</td><td>Issaquah</td><td></td></tr> <tr><td><a href="https://wg21.link/LWG2394">2394</a></td><td>locale::name specification unclear - what is implementation-defined?</td><td>Issaquah</td><td>Complete</td></tr> |

