可以嵌套使用模板。这种方式尤其适用于在通用数据结构上定义通用函数,与在标准 C++ 库中相同。例如,模板排序函数可以通过一个模板数组类进行声明:
template <class Elem> void sort(Array<Elem>);
并定义为:
template <class Elem> void sort(Array<Elem> store)
{int num_elems = store.GetSize();
for (int i = 0; i < num_elems-1; i++)
for (int j = i+1; j < num_elems; j++)
if (store[j-1] > store[j])
{Elem temp = store[j];
store[j] = store[j-1];
store[j-1] = temp;}}上述示例定义了针对预先声明的 Array 类模板对象的排序函数。下一个示例说明了排序函数的实际用法。
Array<int> int_array(100); // construct an array of ints sort(int_array); // sort it