Не совсем ответ, но прямой доступ к Mem работает?
т.е. B1 :: Mem вместо B1 :: mp.
Я почти уверен, что стандарт не допускает этого, поскольку мы обычно печатаем имя шаблона def, когда это тип, а не обращаемся к нему напрямую, но технически это может быть разрешено (не уверен, что это будет означать). Там, где ваше решение, вероятно, не будет работать, поскольку оно требует инициализации статического члена, который выполняется во время выполнения (исправьте меня, если я ошибаюсь), поэтому к нему нельзя получить доступ во время компиляции, как вы хотите.
Возможно, вы могли бы попытаться дать нам более полную картину того, что вы пытаетесь сделать с вашим классом черт / политики, чтобы увидеть, возможен ли подходящий обходной путь.