|
Links - Template Programming
Below is a directory of websites related to template programming in
general and template meta programming in particular.
Articles
Compile-Time Computation of Prime Numbers
Erwin Unruh
http://www.erwin-unruh.de/Prim.html
Design Patterns for Generic Programming in C++
Alexandre Duret-Lutz, Thierry Géraud, and Akim Demaille
http://www.usenix.org/publications/library/proceedings/coots01/full_papers/duret/duret_html/index.html
Using C++ template metaprograms
T. Veldhuizen
C++ Report Vol. 7 No. 4 (May 1995), pp. 36-43.
The article has been reprinted in the book "C++ Gems" edited by Stanley
Lippman.
http://osl.iu.edu/~tveldhui/papers/Template-Metaprograms/meta-art.html
Expression Templates
T. Veldhuizen
C++ Report, Vol. 7 No. 5 June 1995, pp. 26-31
The article has been reprinted in the book "C++ Gems" edited by Stanley
Lippman.
http://osl.iu.edu/~tveldhui/papers/Expression-Templates/exprtmpl.html
C++ Expression Templates
Klaus Kreft & Angelika Langer
C/C++ Users Journal, March 2003
http://www.langer.camelto.de/Articles/Cuj/ExpressionTemplates/ExpressionTemplates.htm
Programmieren mit C++ Templates
Klaus Kreft & Angelika Langer
objektSPEKTRUM, März 2003
http://www.langer.camelot.de/Articles/ObjektSpektrum/C++Templates/C++Templates.htm
Libraries and Source Code
Loki
http://www.moderncppdesign.com/
The Loki library was implemented by
Andrei
Alexandrescu
in conjunction with his book "
Modern
C++ Design
". It is a C++ library that heavily uses templates and contains
flexible implementations of common design patterns and idioms. The source
code is available for download from
SourceForgeNet
.
EXPRESSION TEMPLATES
Quite a number of expression template libraries are available for free
download. The list below by no means claims to be comprehensive or
representative. If you are interested in further information we recommend
commencing your search at one of the directories (see
MORE
LINKS
).
The Blitz Project
http://oonumerics.org/blitz/
A C++ class library for scientific computing which uses template techniques
to achieve high performance.
PETE (Portable Expression Template Engine)
http://acts.nersc.gov/events/PI1999/pete/
A portable C++ framework to easily add powerful expression templates.
POOMA (Parallel Object-Oriented Methods and Applications)
http://acts.nersc.gov/pooma/
An object-oriented framework for applications in computational science
requiring high-performance parallel computers.
MET (Matrix Expression Templates)
http://met.sourceforge.net/
A C++ matrix class library. C++ overloaded operators enable one to
write the simplest code like u = m*v + w.
MTL (Matrix Template Library)
http://www.osl.iu.edu/research/mtl/
A high-performance generic component library that provides linear algebra
functionality for a wide variety of matrix formats. Uses an STL-style
approach. Provides generic algorithms corresponding to the mathematical
operations that define linear algebra. Containers, adaptors, and
iterators are used to represent and to manipulate matrices and vectors.
See also the following paper:
The Matrix Template Library: A Generic Programming Approach to High-Performance
Jeremy G. Siek and Andrew Lumsdaine
http://www.osl.iu.edu/download/research/mtl/papers/iscope_final.pdf
FACT! (Functional Additions to C++ through Templates and Classes)
http://www.kfa-juelich.de/zam/FACT/start/index.html
A library that offers lambda expressions built on top of
PETE
.
By using FACT!'s lambda syntax the programmer can define generic functions
for use with the STL on the fly.
FC++ (Functional Programming in C++)
http://www.cc.gatech.edu/~yannis/fc++/
A library for functional programming in C++, which you can use to define
your own higher-order polymorphic functions.
BLL (The Boost Lambda Library)
http://www.boost.org/libs/lambda/doc/index.html
A C++ template library, which implements lambda abstractions for C++.
The primary motivation for the BLL is to provide flexible and convenient
means to define unnamed function objects for STL algorithms.
Phoenix (A parser used by
Spirit
)
http://spirit.sourceforge.net/index.php?doc=docs/phoenix_v1_0/index.html
Phoenix is a framework that opens up functional programming techniques
such as Lambda (unnamed functions) and Currying (partial function evaluation),
similar to FC++ and BLL.
Books
Go to
BOOKS
TEMPLATES
for books on template programming.
More Links
These are directories that provide further links to website related to
template programming.
Research Centre Jülich
http://www.fz-juelich.de/zam/cxx/
An impressive directory of C++ resources such as books, articles, FAQs,
other C++ pages, compilers, libraries, etc. See in particular the links
to other C++ libraries at
http://www.fz-juelich.de/zam/cxx/extmain.html#lib
The Object-Oriented Numerics Page
http://www.oonumerics.org/oon/#libraries
A directory of links to freely available numeric libraries.
|