This article is an excerpt from Matthew Wilson's recently-published book, Imperfect C++, Addison-Wesley, 2004.
Plowing through some devilish details of template argument deduction, the conditional operator and the macro preprocessor, Eric develops a robust FOR_EACH iterator. Whether you're using arrays, strings, or containers, this one does it all.
by Herb Sutter and Andrei Alexandrescu, November 19, 2004
The C++ Source is pleased to present an excerpt from Herb and Andrei's new book, C++ Coding Standards: 101 Rules, Guidelines, and Best Practices (Addison-Wesley, 2005). More than just style guidelines and "gotcha" warnings, this book clarifies the idioms and practices that pertain specifically to successful C++ software. Even better, you can't avoid deepening your mastery of the finer points of C++ as you read. This is the singularly authoritative Writ of Common Wisdom for the entire C++ development experience.
by Bjorn Karlsson and Matthew Wilson, November 6, 2004
Trampling roughshod over the global namespace (and all other namespaces) with the macro preprocessor is one of the least friendly things you can do in C++. Why, then, is it the case that many popular APIs do exactly that? The authors look at this nasty problem, and demonstrate a simple technique that can be used to obviate it, and be good C++itizens.
UPnP network technology allows personal computer and consumer electronics devices to advertise and offer their services to network clients. Many companies and standards organizations view UPnP as the technological foundation of the digital home, enabling innovative usage models, higher levels of automation, and easier integration of devices from different manufacturers. In this article, Michael Jeronimo provides an introduction to UPnP technology, reviews the protocols that comprise UPnP, and explains the various elements of a UPnP device.
by Bjorn Karlsson and Matthew Wilson, October 1, 2004
Welcome to the first installment of Smart Pointers, a monthly- ish column written exclusively for The C++ Source. Here, two seasoned  programmers—Bjorn Karlsson and Matthew Wilson—carefully dissect C++ idioms, tricks, and power techniques. To make up for the fact that these are very serious topics, we shall occasionally expose you to really crummy programming jokes, too. Now, who said there was no such thing as a free lunch? In this instalment the authors update
The Law of The Big Three, and explain which of the three magic member functions is often not needed.
C++0x is under construction. Get your licks in while there's still time.
glob(): Power, robustness, and genericity without sacrificing efficiency.
by David Abrahams and Aleksey Gurtovoy, August 23, 2004
This article explains how to define and use metafunctions, the compile-time equivalent of functions, and introduces the Boost Metaprogramming Library.
Learn how to validate objects in a boolean context without the usual harmful side effects.
Secure large-scale Java distributed computing is at the heart of the 2.0 Jini release. Every aspect of building a secure distributed computing environment is configurable in Jini. However, that freedom introduces a new set of choices Jini developers and service deployers must make. To ease that complexity, Jini 2.0 introduces a service configuration model. Instead of the configuration language
du jour - XML - the Jini model uses Java objects to configure complex services and their clients. This article provides a tutorial on using the Jini service configuration model, and also illuminates the decisions by the Jini architects to rely on objects, rather than on a document model, for service configuration.
This week, Artima launches a new Zine, the Journal of Spontaneous Networking. This editorial article introduces the Journal, and explains its subject matter.
Veteran developer Greg Colvin traces the evolution of C, C++ and Java with an eye to a better future.
This article shows how to easily process UNIX-style directory entries as STL sequences. Copyright © 2004, Matthew
Good Things are happening in the C++ world.