Compile-Time Computations in C++
Class and function templates add another dimension of programming power
to the C++ language. Computation of constants, evaluation of expressions,
polymorphic dispatch of functions are examples of tasks that can be solved
at compile time rather than at run time - using templates. In this lecture,
we explore advanced template programming techniques that can replace corresponding
object oriented idioms and help eliminated the run time overhead of traditional
object oriented programming.
-
Polymorphism is one of the classic ideas of object oriented programming.
In C++, it typically involves inheritance and virtual function dispatch
at run time. Using templates, polymorphic behavior can be dispatched at
compile time already, thus eliminating any run time overhead.
-
The strategy pattern deals with interchangeable algorithms and suggests
an implementation technique that involves inheritance. The use of templates
provides a run-time efficient alternative technique, sometimes referred
to as policy mix-ins.
-
The C++ template instantiator is a primitive recursive function evaluator.
Certain expressions and constants can be computed recursively at compile
time rather than at run time.
In this lecture, we explore function templates, function pointers, function
object types, traits, the typename keyword, explicit function template
argument specification, function template overloading, and other advanced
template features. |
|
PREREQUISITES
|
|
Level:
|
intermediate |
Duration:
|
2 hours |
Prerequisites:
|
Attendants should be familiar with the concept and pre-standard
language constructs for template programming in C++. Any knowledge of recently
added template features is not required. |
Presented at:
|
C++ World
,
New York, NY, August 1998
Application Development '99
,
London, UK, July 1999 |
If you are interested to hear more about this
and related topics you might want to check out the following seminar or
skim through some further reading:
|
Seminar
|
Paper
|
Slides
|
|