Doc. no.: N1689=04-0129
Date:     10 Sep 2004
Project:  Programming Language C++
Reply to: Matt Austern <austern@apple.com>

C++0x Standard Library wishlist

This is a list of suggested additions to the standard C++ library for the next version of C++ ("C++0x").

This is a wish list, not a list of concrete proposals. Some of these suggestions have already been investigated in detail, some are small and simple changes, some are major research projects, some are vague hopes. This list is intended as a stimulus to further work.

I have listed a name or names beside each item, and, if relevant, I have listed a paper or papers describing the idea. These ideas are not necessarily supported by anyone other than the person who suggested them, and you should not assume that any particular item will make it into C++0x. The items in this list are in no particular order.

Simple and uniform display mechanism for arbitrary ordered lists. (Arrays, STL containers, pairs, tuples, etc.) cout << x should "just work" for such types. Dave Abrahams
Infinite-precision integer arithmetic class Maarten Kronenburg, Bjarne Stroustrup, Matt Austern
String versions of all (or) most functions that take C-style strings (e.g. filestream constructors) Bjarne Stroustrup
Simple functions for extracting int and floating-point values out of a string Bjarne Stroustrup
A threads library Bill Kempf, Bjarne Stroustrup
A socket library Bjarne Stroustrup
Explicit support for Unicode Matt Austern
An XML parser and generator library Bjarne Stroustrup
An infinite precision real (a.k.a. "constructive reals") Bjarne Stroustrup, Hans Boehm
some form of simple graphic/GUI library (possibly a simple interface to the simpler parts of larger libraries)—a recurent theme. Bjarne Stroustrup
a facility for random-access to files; maybe a form of random-access iterators for filestreams Bjarne Stroustrup
a range checked version of standard containers/iterators and algorithms Bjarne Stroustrup
a way of manipulating files that a part of a directory structure Bjarne Stroustrup, Beman Dawes
a good linear algebra library (Matrices and vectors) Bjarne Stroustrup
Versions of the standard containers with virtual destructors David Miller
Move semantics, which requires core and library support Howard Hinnant
A string formatting library. (Aka, type safe printf) Gary Powell
A container to hold anything, like dynamic_any Gary Powell
A date/time library, a date is not a duration! And an end to time_t. Gary Powell
a graph library, aka boost/graph (supplements std containers) Gary Powell
math/octonion & math/quaterion's (used by game designers for 3d math.) Gary Powell
a SI/Units library. ( e = m c2, and end to the mars lander crashes.) Gary Powell
New STL algorithms: copy_if, is_sorted, versions of the uninitialized_* algorithms that take allocator arguments. Matt Austern
A SOAP- and XML-based web services binding to the standard library. There would also need to be some kind of metalanguage/directives mechanism for marking within the C++ source, which classes and functions are being exposed as web services. Jonathan Schilling
More math functions for statistics. (http://www.hetp.u-net.com/public/math_stats_functions_tr2.pdf) Paul Bristow
A mechanism for accessing integer operations that every processor has: addition with carry, full-width multiplication, and division with remainder and quotient. The signatures might look something like this: pair<UInt, bool> add(UInt, UInt);, pair<UInt, UInt> mult(UInt, UInt);, pair<UInt, UInt> div(UInt, UInt);. We would probably want overloads for unsigned int, unsigned long, unsigned long long (assuming it's added to the core language), and maybe unsigned char. Matt Austern

Please sent additions to this list to Matt Austern, austern @ apple.com