A C++ template library for embedded applications
Designed and maintained by
Aster Consulting Ltd
MIT licensed
Join the ETL community


This group is the catch-all for all other templates.
As well as various generally useful templates, there is some functionality reverse engineered from the C++ 11
Algorithms reverse engineered from C++ 11
Allows alignment of data structures.
binary.h Utility functions for manipulating binary numbers.
Define a value that cycles between two limits.
debounce.h A signal and key debouncer
debug_count.h A counter for container debugging
Constant definitions and endianness test.
A smart enum utility.
The hander for errors. For adding error logging.
The base class for all ETL errors.
fixed_iterator.h An iterator that lives at a fixed address. Increments and decrements are null operations.
A callback wrapper for free and member functions.
functional.h Reverse engineered functional classes from C++ 11.
instance_count.h Counts instances of classes. Not thread safe.
integral_limits.h A set of classes similar to numeric_limits, but completely available at compile time.
io_port.h A set of templates for building interface classes to memory mapped hardware ports.
iterator.h Helper structures for iterator tags.
largest.h Allows the largest type or largest alignment to be determined at compile time.
memory.h Low level memory copy/initialisation algorithms,
nullptr.h Reverse engineered C++ 11 nullptr.
numeric.h Reverse engineered numeric classes from C++ 11.
parameter_type.h Allows the method of passing a parameter to be determined by the type.
random.h Pseudo Random Number Generators.
smallest.h Allows the smallest type or smallest type that can contain N bits to be determined, at compile time.
static_assert.h Static assert macro.
type_def.h Typesafe typedefs
type_traits.h Reverse engineered types traits classes from C++ 11.