Using the template mechanism, you can define generic classes,
and then specialize those generic class definitions to define
specific classes.
If you want to define a template class,
then instantiate the following pattern:
template <template parameters>
class class name {...};
If you want to declare a variable using a template class,
then instantiate the following pattern:
class name<template arguments> variable name;
You can extend C++ to handle lists using the template mechanism. To
do so, you define a generic list header class and link class.
Later, you specialize those generic class definitions to define specific
classes.