Small - only the code used in a final instantiation of your derived classes are compiled into your program, as opposed to the multi-megabyte MFC libraries and DLLs
Fast - template instantiation rather than virtual methods are used to override behavior, allowing more aggressive compiler optimization
Flexible - the existing class hierarchy can be redefined through the template arguments
Complexity is the downside. The user must also be aware of dependencies between sibling classes.