It's a bit more of a template than a common C++ template. It isn't a state because it does indeed operate on States but these states are not of type "StateTemplate" but of Type "StateType". That's a fact I want to emphasize with this naming.