The Active Template Library: A Developer's Guide