Angelika Langer - Training & Consulting
HOME | COURSES | TALKS | ARTICLES | GENERICS | LAMBDAS | IOSTREAMS | ABOUT | CONTACT | Twitter | Lanyrd | Linkedin
Course Curriculum Angelika LangerCourse Curriculum Angelika Langer  
HOME

  GENERAL INFO
  SCHEDULE
  REGISTRATION
  
  JAVA
    EFFECTIVE JAVA
    CONCURRENCY
    PERFORMANCE
    LAMBDAS
    JAVA AFTER EIGHT
    MODULE SYSTEM
    GC TUNING
    MEMORY MODEL 
    JAVA INTRO

  C++
    RELIABLE C++
    EFFECTIVE STL
    TEMPLATES
    IOSTREAMS
    C++ INTRO   
 

GENERICS 
LAMBDAS 
IOSTREAMS 
ABOUT 
CONTACT 
C++ Template Programming

C++ Template Programming
COURSE DESCRIPTION

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
 


 
COURSE CONTENT


 
Template Basics
  • Class and function templates
  • Template parameters
  • Class template specialization
  • Function template overloading
  • Member templates
Advanced Template Features
  • Name lookup
  • Friends and templates
  • Template instantiation
  • Template argument deduction
  • Specialization and overloading
Templates Programming Techniques
  • Static polymorphism and generic programming
  • Traits and policy classes
  • Static virtuality
  • Template metaprogramming
  • Expression templates
Advanced Applications
  • Type traits
  • Smart pointers
  • Function objects
 

 
FURTHER READING

 
To get an impression of some topics covered in this course check out the sample reading: 
 
 
Compile Time Computations in C++
White Paper
Expression Templates
Article in C/C++ Users Journal
 
TRAINING LOCATIONS

Open Enrollment
Public courses are conducted in collaboration with partner companies worldwide. Presentation language is English or German, depending on the location. For further information go to GENERAL INFO.
On-Site Training
Courses can be held at your company site. Duration and content will be tailored to your specific needs and prerequisites. Presentation language is English or German.  For further information go to GENERAL INFO.
For information regarding training locations and the current schedule of public courses go to SCHEDULE. For further information or enrollment send me EMAIL or use the REGISTRATION form.
Schedule
To check for availability, price and other details send me EMAIL or use the REGISTRATION form.
  © Copyright 1995-2008 by Angelika Langer.  All Rights Reserved.    URL: < http://www.AngelikaLanger.com/Courses/Templates.htm  last update: 1 Apr 2008