OTL 3.0 was designed as a combination of a C++ template framework and OTL-adaptors. The framework is a generic implementation of the concept of OTL streams. The OTL-adaptors are thin wrappers around the database APIs and are used as class type parameters to be substituted into the template framework.
OTL 3.0 covers the functionality of a whole database API with just four concrete classes: otl_stream, otl_connect, otl_exception and otl_long_string, generated from the template framework and the OTL-adaptors.
The OTL code gets expanded into direct database API function calls, so it provides high performance, reliability and thread safety. OTL 3.0, being a template library, is highly portable since it is self-sufficient and very compact (around 150Kb in a single header file).
Though the word template is present in the name of the library, OTL 3.0 does not provide template classes to the end user. OTL 3.0 is referred to as a template library because its implemenation is based on templates but the intefrace which the library provides looks more like an appliance.