The following libraries support generic programming. The libraries can be used without detailed knowledge of template meta programming.
Boost.TypeTraits provides functions to check properties of types.
Boost.EnableIf can be used together with Boost.TypeTraits to, for example, overload functions based on their return types.
Boost.Fusion makes it possible to create heterogeneous containers – containers whose elements can have different types.