But having enums would improve a lot code readability, because so far it is pretty hard to understand what you get from "GerPermission". Don't worry about conversion :) I know what will help there, look:

enum Permissions{ PermONE, PermTWO};

template <Permissions>
std::string PermissionToString();

template <>
std::string PermissionToString<Perm1>() { return "you see, no conversion at all :)"; }