Published Articles and Presentations
Here is a list of articles and other publications written by one of our directors, Anthony Williams. In each case, the title is linked to the online version.
| Issue / Publication Date | Publication | Title | Description |
|---|---|---|---|
| September 2007 | C++ Standards Committee Pre-Kona Mailing | Names, Linkage and Templates (Rev 2) (PDF) | This paper is an update to the earlier proposals for making local types usable with templates (N1945 and N2187), with revised wording. |
| June 2007 | C++ Standards Committee Pre-Toronto Mailing | Multi-threading library for Standard C++ | This paper (jointly authored with Howard Hinnant, Beman Dawes, Lawrence Crowl and Jeff Garland) proposes a set of classes for a basic thread library for C++, including thread launching, mutexes and condition variables. |
| May 2007 | C++ Standards Committee Post-Oxford Mailing | Thread Pools and Futures | This paper proposes new classes to the C++ Standard Library for thread pools and futures, to build on top of the new threading facilities. |
| April 2007 | Overload 78 | Implementing Synchronization Primitives for Boost on Windows Platforms | This article describes the techniques involved in writing a new mutex implementation for Windows. |
| March 2007 | C++ Standards Committee Pre-Oxford Mailing | Names, Linkage and Templates (rev 1) (PDF) | This paper is an update to the earlier proposal for making local types usable with templates (N1945), with revised examples, motiviation and wording. |
| November 2006 | C++ Standards Committee Post-Portland Mailing | Thoughts on a Thread Library for C++ | This paper outlines thoughts on various aspects of a thread library for C++, including one-time initialization, and general thread synchronization. |
| June 2006 | CVu 18.3 | Building on a Legacy | This article discusses ways of handling legacy code, and how to work so that maintenance gets easier rather than harder. |
| June 2006 | Overload 73 | Implementing drop-down menus in pure CSS (no JavaScript) | This article describes the details behind implementing drop-down menus with CSS in a cross-browser fashion. |
| May 2006 | Dr. Dobb's Journal | Message Handling Without Dependencies | This article describes a type-safe technique for passing messages around an application in C++, without requiring extensive coupling between the producer and consumer |
| February 2006 | C++ Standards Committee Pre-Berlin Mailing | Names, Linkage and Templates (PDF) | This paper proposes that the C++ Standard is changed, so that unnamed and local types have linkage, in order to simplify the language and make these types usable with templates. |
| April 2004 | CVu 16.2 | Writing Maintainable Code | A brief summary of techniques to help you write maintainable code. |
| November 2003 | C/C++ Users Journal | Strong Exception-Safe Storage | This article describes the use of a double-buffer technique to provide the Strong Exception Safety Guarantee without the use of dynamic memory, even when the underlying data only provides the Basic Exception Safety Guarantee. |
| April 2003 | Overload 54 | EXPR_TYPE — An Implementation of typeof Using Current Standard
C++ (PDF) |
typeof is a much-sought-after facility that is lacking from current C++; it is the
ability to declare a variable to have the same type as the result of a given expression, or make a
function have the same type as an expression. The general idea is that
typeof(some-expression) would be usable anywhere a type name could normally be
used. This article describes a way of providing this ability within the realms of current
C++. There is code to accompany this article. |
| March 2003 | C++ Standards Committee Pre-Oxford Mailing | Making Local Classes more Useful (PDF) | This paper proposes a couple of small changes to the C++ Standard: to allow local classes to work with templates, and to allow local classes to declare friend functions. |
| October 2002 | Overload 51 | Pairing Off Iterators (PDF) | This article describes the implementation of an iterator adaptor that converts a pair of ranges into a range of pairs, so that two containers can be sorted by a key held in only one of them, for example. The code is available for download |
| 3rd April 2002 | ACCU Spring Conference 2002 | Function Composition and Return Type Deduction (PDF) | This paper describes my function composition library, which is available for download. This library provides a facility for creating composite functions from basic ones at the point of use, and can be used to create a simple lambda expression facility. |
| October 2001 | Overload 45 | Introduction to C++ Templates (PDF) | This is a brief introduction to C++ templates - how they work, how to use them, and how to write your own. |
| August 2001 | Overload 44 | Flexible Functors and Binders (PDF) | This article describes a set of binders to assist writing programs using the Functional Programming style, and a set of adaptors for other functors, such as pointers-to-functions and pointers-to-member-functions, to enable them to be integrated seamlessly. The code to accompany the article can be downloaded. |
| April 2001 | Overload 42 | A Generic Non-Intrusive Smart Pointer Implementation (PDF) | This article describes the implementation of a smart pointer that can
be freely converted to and from a raw pointer, or other types of smart
pointer, without losing its reference count. It also permits the use of
arrays, and the use of dynamic_cast. The code to accompany the
article can be downloaded. There is an
erratum for this article. |