/// An object that is a template for copies from the template.
///
/// This is predominantly used with [SubstList](crate::type_system::SubstList)
/// and [TyDecl](crate::language::ty::TyDecl). The various variants of
/// [TyDecl](crate::language::ty::TyDecl) contain fields
/// `subst_list: Template<SubstList>`. This type indicates that the
/// [SubstList](crate::type_system::SubstList) contained in this field is simply
/// a template for usages of the declaration declared in that particular
/// [TyDecl](crate::language::ty::TyDecl) node.
where
T: Clone;