Traditionally, templates were known as a means to express parameterized
types. True and useful, but C++ templates allow more than just that. Over
the past couple of years, template programming has become a paradigm of
its own. Compile-time polymorphism, generic programming, template meta-programming
are only some of the buzz words in the field.
Until recently, only few programmers were capable of exploiting the
full power of template features in C++, chiefly because popular compilers
(such as the Microsoft C++ compiler) did not support templates very well.
Today, even Microsoft is about to ship a standard-compliant C++ compiler
that will provide full support of all template language features, including
template template parameters, explicit specialization of templates, function
template overloading, and many more. Given the increasing availability
of excellent C++ compilers, template programming will soon enter the main
stream of C++ programming techniques.
If you need to keep up with the C++ community and want to know everything
about the latest progamming techniques in C++, then this is the right course
for you.
This seminar covers everything that is known today about template programming,
from basic language features to in-depth coverage of challenging issues
such as name lookup in presence of templates, template instantiation strategies,
the details of template argument deduction, specialization and overloading.
Language features are only half of the story. Beyond the features we'll
explore all modern template programming idioms and techniques that have
emerged so far, including compile-time polymorphism and generic programming
(as used in the STL), traits and policy classes (as used in the Boost and
Loki library), the curiously recurring template pattern and parameterized
virtuality (as used in the ATL), template metaprogramming and expression
templates.
The course is designed and conducted by Angelika
Langer and backed by years of experience in teaching C++ related
topics and more than a decade of real-world experience in industrial software
development. Angelika Langer is a freelance trainer/consultant in the area
of object-oriented software development in C++ and Java. She is an observing
member of the ANSI C++ standards committee since 1993, former columnist
of C++ Report and C/C++ Users Journal, co-author of the book "Standard
C++ IOStreams and Locales", and a recognized speaker at conferences all
over the world.
|
Prerequisite Courses
and Skills:
|
Introductory C++ course, or equivalent experience
1-5 years of programming experience using C++; knowledge of templates
would be useful, but is not strictly required |
Duration:
|
3 days |
Format:
|
Lecture, question/answer, code reviews, and hands-on exercises.
This is not a hard to digest lecture-only seminar; instead the focus is
on gaining practical experience by applying and practicing the newly acquired
programming techniques. |
Attendants should feel comfortable with the basics of the language and
be open for broadening their knowledge of traditional C++. We will explore
new language features along with related programming techniques. The goal
is not only to learn the syntax and semantics of templates, but also where
and why you would want to use them.
Knowledge of templates will without doubt be helpful, but is not strictly
required. The course starts from scratch anyway and guides the attendants
step by step into increasingly complex template programming techniques.
PERFORMANCE
OBJECTIVES
|
Catch up on the language standard |
|
Understand modern template libraries |
|
Know how to use templates to improve runtime perfomance |
|
Keep up with the C++ community |
|
Understand generic programming and template metaprogramming |
BUSINESS OBJECTIVES
|
Equip your software professional with state-of-the-art C++ skills |
|
Increase the efficiency of your C++ programs |
|
Keep your software flexible and maintainable |
|
Build high-quality products |
|