I don't particularly like to see this mapping in the class interface. This could all be declared in the .cc file. We could have a mapping class. It just introduces too much noise in terms of the definition of this class.
Code in .h files is also to be avoided... there is no reason the static function definition should be here.