template < class T, template < class U > Alloc = alloctor > class list { ...So you can declare a list either way:
list< int > a; list< int, far_allocator > b;But most compiler don't yet support default template arguments that are templates themsleves. So the kludge is that the allocator is handled by the preprocessor. Very limiting.