I think in C# they are called generics. They basically let you create functions and classes that work with any type. For example:
template <typename T>
void swap (T & a, T & b )
{
T c = a;
a = b;
b = c;
}
So now you can use the swap function for ints, floats, strings and basically any type that is copy constructible and assignable. You can also create generizñc containers like the std::list<T>.
Spine?