Compile time recursive objects in C++
Jarvi, J.
Turku Centre for Comput. Sci.;
This paper appears in: Technology of Object-Oriented Languages, 1998. TOOLS 27. Proceedings
Publication Date: 22-25 Sep 1998
On page(s): 66-77
Meeting Date: 09/22/1998 - 09/25/1998
Location: Beijing, China
ISBN: 0-8186-9096-8
References Cited: 11
INSPEC Accession Number: 6062215
Digital Object Identifier: 10.1109/TOOLS.1998.713588
Current Version Published: 2002-08-06
Abstract
The article explores the possibilities of generic programming
offered by the template features of C++. We define compile time
recursive objects as instances of class templates which contain other
instances of the same template as member variables. With such templates
we can define containers that contain objects of arbitrary types, but
where the type of each element is known at compile time. The structure
of the container is therefore fixed. The technique mimics the
polymorphism achieved with dynamic binding and inheritance using static
binding and template specialisation. It is obviously less flexible but
offers considerable performance gains at runtime. We give the template
definitions for compile time recursive lists and explain how to perform
operations on these lists. As an example application, we use compile
time lists in the definition of templates for special sparse vectors and
matrices. In these vectors and matrices, the sparseness pattern can be
arbitrary but must be known at compile time. The tracking of zero and
nonzero elements is performed at compile time. This allows the
programmer to use abstract vector and matrix expressions and still reach
performance equal to hand coded operations. This is possible since the
compiler can locate the elementary expressions between zero entries and
discard them entirely from the resulting code
Index
Terms
Available to subscribers and IEEE members.
References
Available to subscribers and IEEE members.
Citing Documents
Available to subscribers and IEEE members.