April 2000 From the Pages_Column

Traits: The else-if-then of Types

Andrei Alexandrescu
What are traits, and why do people keep referring to them as an important technique for generic programming in C++? Traits are important because they allow making compile-time decisions based on types. Alexandrescu shows how traits lead us to create code that's cleaner, more readable, and easier to maintain.

Generic Fundamentals

JosÈe Lajoie and Stanley Lippman
Sometimes, trying to understand a writer or artist (or programmer's) finished design can be intimidating: It is difficult to get one's arms around the complexity, and one feels both a sense of diminishment and wonder. Lajoie and Lippman step through a series of functional iterations leading to the design of filter().

Why You Shouldn't Use set—and What to Use Instead

Matt Austern
Everything in the Standard C++ library is there for a reason, but it isn't always obvious what that reason is. Sometimes it makes sense to use set, but not as often as you might think. The standard library provides other tools for storing and looking up data, and often you can do just as well with a simpler, smaller, faster data structure.

The OMG CORBA Messaging QoS Framework: An Overview

Douglas C. Schmidt and Steve Vinoski
Schmidt and Vinoski finish their series covering the OMG CORBA Messaging specification by highlighting the quality of service (QoS) framework supplied by the OMG Messaging specification and explaining where and how applications can use these policies.

Implementing Manipulators With and Without Parameters in the Standard IOStreams

Klaus Kreft and Angelika Langer
Here's a look at another category of abstractions related to IOStreams: manipulators. Kreft and Langer explain how manipulators without parameters can be implemented, as well as providing a straightforward technique that allows the implementation of manipulators with parameters.