diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 12dee3a273c..114a2ffb66c 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2018-10-09 Jonathan Wakely + + * include/bits/stringfwd.h (string, wstring, u16string, u32string): + Define typedefs outside of __cxx11 inline namespace. + * python/libstdcxx/v6/printers.py (register_type_printers): Also + register printers for typedefs in new location. + 2018-10-08 Jonathan Wakely PR libstdc++/87538 diff --git a/libstdc++-v3/include/bits/stringfwd.h b/libstdc++-v3/include/bits/stringfwd.h index 15eb7183633..2b7f4612cbc 100644 --- a/libstdc++-v3/include/bits/stringfwd.h +++ b/libstdc++-v3/include/bits/stringfwd.h @@ -69,6 +69,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 typename _Alloc = allocator<_CharT> > class basic_string; +_GLIBCXX_END_NAMESPACE_CXX11 + /// A string of @c char typedef basic_string string; @@ -85,8 +87,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 typedef basic_string u32string; #endif -_GLIBCXX_END_NAMESPACE_CXX11 - /** @} */ _GLIBCXX_END_NAMESPACE_VERSION diff --git a/libstdc++-v3/python/libstdcxx/v6/printers.py b/libstdc++-v3/python/libstdcxx/v6/printers.py index afe1b325d87..827c87b70ea 100644 --- a/libstdc++-v3/python/libstdcxx/v6/printers.py +++ b/libstdc++-v3/python/libstdcxx/v6/printers.py @@ -1556,6 +1556,8 @@ def register_type_printers(obj): # Add type printers for typedefs std::string, std::wstring etc. for ch in ('', 'w', 'u16', 'u32'): add_one_type_printer(obj, 'basic_string', ch + 'string') + add_one_type_printer(obj, '__cxx11::basic_string', ch + 'string') + # Typedefs for __cxx11::basic_string used to be in namespace __cxx11: add_one_type_printer(obj, '__cxx11::basic_string', '__cxx11::' + ch + 'string') add_one_type_printer(obj, 'basic_string_view', ch + 'string_view') @@ -1568,7 +1570,7 @@ def register_type_printers(obj): for x in ('stringbuf', 'istringstream', 'ostringstream', 'stringstream'): add_one_type_printer(obj, 'basic_' + x, ch + x) - # types are in __cxx11 namespace, but typedefs aren'x: + # types are in __cxx11 namespace, but typedefs aren't: add_one_type_printer(obj, '__cxx11::basic_' + x, ch + x) # Add type printers for typedefs regex, wregex, cmatch, wcmatch etc.