I would like to use a template class to provide some common functionality to some child classes that are very similar. The only variation is the enumeration that each uses.
The syntax goes for value arguments like it is for typename arguments. Basically, you just replace typename with the name of your enum:
enum Foo { Bar, Frob };
template struct Boom {}; // primary template
template <> struct Boom {}; // specialization of whole class
...
template <> void Boom::somefun() {} // specialization of single member