AOSD Conference
›› Program Overview
›› Research Track
›› Industry Track
›› Keynotes
›› Workshops
›› Tutorials
›› Demonstrations
›› Panel
›› BOFs
Back to list of tutorials

T4 : Aspect-Oriented Programming with C++ and AspectC++

Date Tuesday, March 21, 2006 morning (half day)

Olaf Spinczyk, Friedrich-Alexander-University Erlangen-Nuremberg
Daniel Lohmann, Friedrich-Alexander-University Erlangen-Nuremberg

Level Introductory: Participants should be familiar with C/C++. Basic understanding of AOSD is recommended, but not necessary.


Aspect-oriented programming with C++ does not necessarily require a language extension like AspectJ for Java. There is a set of idioms, which allows the modular implementation of crosscutting concerns in C++, purely based on the features provided by the language. The first part of this tutorial will present these idioms and also discuss the drawbacks of this approach in comparison to a language extension. The rest of the tutorial will concentrate on AspectC++, a language extension to C++ which extends the AspectJ approach into the C++ world. With this extension, aspects can be implemented and applied to component code without having to change the existing code base. The tutorial will introduce AspectC++ language elements and present various examples. A compiler for AspectC++, which transforms AspectC++ code into standard C++, as well as an Eclipse Add-In, are available under the GPL from Furthermore, pure-systems GmbH offers commercial support for the compiler and an Add-In to integrate it into Visual Studio. After the language introduction, a dedicated part will focus on development environments for AspectC++. It covers the usage of the ac++ compiler and also the available integrated development environments, namely the ACDT Eclipse Add-In and the Visual Studio Add-In. These demonstrations are followed by the presentation of a more complex “real-world” application, which shows that AspectC++ is an ideal language to develop (embedded) software product lines. The tutorial ends with a summary and a discussion of future work.


Olaf Spinczyk has a background of more than seven years research on AOP and operating systems. In 2002 he received the “best dissertation of 2002” award by the computer science faculty of the University of Magdeburg, Germany, for his work in this field. In 2001 he started the development of AspectC++. Today he is the main designer and developer of the ac++ weaver. In 2002 he started to cooperate with the pure-systems GmbH in Magdeburg, Germany, to speed up the ac++ development and to evolve it from a research prototype to a commercial product.

Olaf has taught about 30 classes and seminars at the University of Magdeburg and Erlangen-Nuremberg and is giving lectures on aspect-oriented systems programming and operating system engineering. He has already given this tutorial at AOSD ’04 and AOSD’05.

Daniel Lohmann worked as software developer, consultant and trainer for several years. He finished his Diploma in Computer Science in 2002. His PhD research is on the development of aspectoriented operating system product-lines. Since joining the Operating Sytems group at Friedrich-Alexander-University, he actively participates in the AspectC++ language design and the ac++ development. His main focus is the combination of aspects with generic code.

Daniel has more than four years of expertise in the training of IT professionals. He taught developers from Deutsche Telekom, Siemens, Deutsche Bank and many other companies. Today, he is teaching classes and seminars on aspect- and object-oriented operating system design at Friedrich-Alexander-University. He has already given this tutorial at AOSD ’04 and AOSD’ 05.

Edited by the AOSD Conference Committee.  Send comments to: