My view is that GDB is already written in a poor cousin of C++.
Nearly every feature that people hate about C++ is already in use in
GDB. This list is not exhaustive, just informational:
* Subclasses. See general_symbol_info. struct value and struct type
would be improved by them.
* Virtual functions. gdbarch, languages, and values all use these.
* Overloaded functions. Anywhere you see a _1 suffix.
* Templates. Both observers and VEC are templates.
* Exceptions. Used ubiquitously.
* RAII. Cleanups, but they are dynamic and more error-prone.
* Even global constructors -- init.c.
In most cases, GDB's implementation of these features is inferior to
that of the C++ compiler.