C++ Books

Friday, December 7, 2007

C++ Chronicles

Nostalgic recollections of some early days of C++ :-)

Friday, September 21, 2007

Open Multi-Methods for C++

We've recently got our paper on multi-methods accepted to GPCE'07 and Peter will do a dry run of the presentation on Tuesday, September 25, 2007 at 16:00 in HRBB 302. Please stop by and give us your feedback. Thanks!

Abstract


Multiple dispatch -- the selection of a function to be invoked based on the
dynamic type of two or more arguments -- is a solution to several classical
problems in object-oriented programming. Open multi-methods generalize multiple dispatch towards open-class extensions, which improve separation of concerns and provisions for retroactive design. We present the rationale, design, implementation, and performance of a language feature, called open multi-methods, for C++. Our open multi-methods support both repeated and virtual inheritance. Our call resolution rules generalize both virtual function dispatch and overload resolution semantics. After using all information from argument types, these rules can resolve further ambiguities by using covariant return types. Great care was taken to integrate open multi-methods with existing C++ language features and rules. We describe a model
implementation and compare its performance and space requirements to existing open multi-method extensions and workaround techniques for C++. Compared to these techniques, our approach is simpler to use, catches more user mistakes, and resolves more ambiguities through link-time analysis, runs significantly faster, and requires less memory.

In particular, the runtime cost of calling an open multimethod is constant and
less than the cost of a double dispatch (two virtual function calls). Finally,
we provide a sketch of a design for open multi-methods in the presence of
dynamic loading and linking of libraries.

Technical report on this work can be found here

More information about Peter Pirkelbauer can be found on his webpage.

Wednesday, September 12, 2007

The Future of C++

by Bjarne Stroustrup

In a rare public talk, C++ creator Dr. Bjarne Stroustrup discusses his ideal in programming languages, as well how he sees the next version (and beyond) of C++ developing. He explains the general selection criteria used for adding new features, some of the legacy of C++, and many other interesting topics. Especially interesting is during the Q&A he explains his views of the embrace and extend mentality some implementations, such as VC++, have taken.


Get the Flash Player to see this video using Flash Player.




Source: University of Waterloo

Tuesday, July 31, 2007

C++0x: An overview

by Bjarne Stroustrup

A good programming language is far more than a simple collection of features. My ideal is to provide a set of facilities that smoothly work together to support design and programming styles of a generality beyond my imagination. Here, I briefly outline rules of thumb (guidelines, principles) that are being applied in the design of C++0x. Then, I present the state of the standards process (we are aiming for C++09) and give examples of a few of the proposals such as concepts, generalized initialization, being considered in the ISO C++ standards committee. Since there are far more proposals than could be presented in an hour, I'll take questions.



Source: Google Speaker Series

Wednesday, February 21, 2007

Concepts: Extending C++ Templates For Generic Programming

by Doug Gregor

Concepts are a major addition to C++0x that make templates more robust, more powerful, ... all » and easier to write and use. At their most basic level, concepts provide a type system for templates. Using concepts, the C++ compiler is able to detect errors in the definition and use of templates before they are instantiated. One immediately obvious benefit of this separate type-checking capability is a dramatic improvement in error messages resulting from improper use of templates. Look a little deeper and we find that concepts support an entirely new programming paradigm, Generic Programming, enabling the construction of a new breed of generic libraries that provide better extensibility, composability, and usability than what is possible with today's C++.

This talk will provide an overview of the new features introduced by concepts and how they will benefit C++ programmers. We will see how concepts can be used to express the core components of the C++ Standard (Template) Library, and explore some of the new capabilities that concepts bring to the C++ language.



Source: Google Tech Talks

C++0x Initialization Lists

by Bjarne Stroustrup

Getting initialization right is an important part of programming. Over the years, this ... all » has led to a mess of language facilities and techniques. This talk describes how C++0x (most likely) will address two issues: how to get a uniform syntax and semantics for all initialization and how to allow initialization by general lists. Obviously, people will want the solution to be really simple and completely compatible. As ever, the resolution is to be almost completely compatible and almost simple. This talk will describe sequence constructors, homogeneous and heterogeneous initializer lists, and (as far as time allows) fit generalized constant expressions, prevention of narrowing conversions, and variadic templates into this picture.



Source: Google Tech Talks