Issues, errata and bug reports to C++ publications

Over the years, I contributed errata and bug reports to some excellent C++ publications:

Effective C++, Third Edition Errata for Effective C++, Third Edition by Scott Meyers
More Effective C++ Errata for More Effective C++ by Scott Meyers
Effective STL Errata for Effective STL by Scott Meyers
Modern C++ Design Errata for Modern C++ Design by Andrei Alexandrescu.
See also
Writing Secure Code 2nd Ed Errata for Writing Secure Code 2nd Edition by Michael Howard and David LeBlanc.
MSDN Library SafeInt.hpp, the source file from Integer Handling with the C++ SafeInt Class, an MSDN article by David LeBlanc.
A new version of SafeInt.hpp is available at See also David's web log, and my issues at the SafeInt Issue Tracker.
Visual C++ Microsoft Visual C++:
Visual C++ typeid should ignore top-level const of function arguments, with help from Alex Blekhman.
Using-declaration ("using std::swap") should not disable argument-dependent, with help from Jeroen Eggermont.
Compiler bug: error C2839 when operator-> returns pointer to built-in type, opened by David Lowndes.
Value-initialization in new-expression by Pavel Kuznetsov, MetaCommunications. (I added extra information to the report.)
Borland C++ Borland C++:
Report #51854 - Value-initialization: POD struct should be zero-initialized, with help from Nicola Musatti.
Report #69196 - Fatal F1004 on std::swap template specialization caused by rvalue reference bug, related to Boost ICE, reported by Christopher Greene.
ISO IEC C++ Standard Library Issues:
594. Disadvantages of defining Swappable in terms of CopyConstructible and Assignable
659. istreambuf_iterator should have an operator->()
690. abs(long long) should return long long
809. std::swap should be overloaded for array types
850. Should shrink_to_fit apply to std::deque?, together with Beman Dawes, Howard Hinnant, and Hervé Brönnimann
900. stream move-assignment, with help from Alberto Ganesh Barbati and Howard Hinnant (Sorry, still no proposed resolution!)
930. Access to std::array data as built-in array type, with help from Lawrence Crowl and Nicolai Josuttis
941. Ref-qualifiers for assignment operators, proposed resolution, N2819, co-witten with Daniel Krügler
972. The term "Assignable" undefined but still in use
1131. C++0x does not need alignment_of, raised by Scott Meyers
Concepts ConceptC++ and ConceptGCC:
Revisiting name lookup with the swap() example by Douglas Gregor.
...and I submitted a few tickets to the ConceptGCC Trac.
Boost Boost C++ Libraries:
Ticket #1019 - iterator_facade::pointer should be the return type of operator-> (DR 445), as suggested by David Abrahams.
Ticket #1217 - value_initialized leaves data uninitialized, when using MSVC, with help from Fernando Cacciola.
Ticket #1459 - value_initialized leaves data uninitialized, when using Borland
Ticket #1910 - function::swap should avoid doing memory allocations, triggered by Arvid Norberg.
Ticket #2056 - Please add support for built-in arrays to boost::swap, discussed at the Boost mailing list.
Ticket #2243 - value_initialized should have its own swap functions
See also the Boost development trunk: boost/utility/value_init.hpp and libs/utility/value_init_test.cpp
CppUnit CppUnit- C++ port of JUnit:
[ 2185407 ] TestDecorator does assume ownership! (Bug)
[ 2187743 ] Please add access to XmlElement attributes (Feature request)
TestReference class (Suggested solution to CppUnit's ownership problem)

Niels Dekker, Dekkerware
E-mail (no spam please): dekkerware at
Page updated on 2008-12-08