a class that encapsulates a set of types and functions necessary for class templates and function templates to manipulate objects of types for which they are instantiated