--- Comment #4 from Jonathan Wakely <redi at gcc dot> ---
Ah, or maybe the typedef std::__cxx11::string is not in the debug info, so the
type printer doesn't know that std::__cxx11::basic_string<char> is the same
type as std::__cxx11::string.

In testsuite/libstdc++-prettyprinters/ we have a relevant comment:

// This test is written in a somewhat funny way.
// Each type under test is used twice: first, to form a pointer type,
// and second, as a template parameter.  This is done to work around
// apparent GCC oddities.  The pointer type is needed to ensure that
// the typedef in question ends up in the debuginfo; while the
// template type is used to ensure that a typedef-less variant is
// presented to gdb.

Does this patch help?

--- a/libstdc++-v3/testsuite/libstdc++-prettyprinters/
+++ b/libstdc++-v3/testsuite/libstdc++-prettyprinters/
@@ -36,6 +36,7 @@ placeholder(const T *s)
+  std::string *string_ptr;
   using namespace std;
   unique_ptr<vector<unique_ptr<vector<int>*>>> p1;
   unique_ptr<vector<unique_ptr<set<int>*>>[]> p2;
@@ -50,6 +51,7 @@ main()
+  placeholder(&string_ptr);

   std::cout << "\n";
   return 0;

Reply via email to