Modern C++ compilers are tuned to minimize abstraction penalties arising from heavy use of the STL.
[3] In November 1993 Alexander Stepanov presented a library based on generic programming to the ANSI/ISO committee for C++ standardization.
The committee's response was overwhelmingly favorable and led to a request from Andrew Koenig for a formal proposal in time for the March 1994 meeting.
The requirements for the most significant extension (associative containers) had to be shown to be consistent by fully implementing them, a task Stepanov delegated to David Musser.
Subsequently, the Stepanov and Lee document 17 was incorporated into the ANSI/ISO C++ draft standard (1, parts of clauses 17 through 27).
The prospects for early widespread dissemination of the STL were considerably improved with Hewlett-Packard's decision to make its implementation freely available on the Internet in August 1994.
[4] Any sequence supporting operations front(), back(), push_back(), and pop_front() can be used to instantiate queue (e.g. list and deque).
This is because an associative container's methods can take advantage of knowledge of the internal structure, which is opaque to algorithms using iterators.
Searching algorithms like binary_search and lower_bound use binary search and like sorting algorithms require that the type of data must implement comparison operator < or custom comparator function must be specified; such comparison operator or comparator function must guarantee strict weak ordering.
The Quality of Implementation (QoI) of the C++ compiler has a large impact on usability of the STL (and templated code in general):