Как я понял из вашего комментария к вопросу, вам нужно преобразовать строку в enum, а затем вы хотите вызвать функцию со значением enum.
Если это так, почему вы все усложняете с помощью связывателей?
Вы можете просто сделать что-то вроде:
// Initialize your map with appropriate string -> enum mappings.
и
callYourFunction(yourMap[yourStringFromInput]);
Тип карты будет:
std::map<std::string, YourEnumType> yourMap;
И прототип функции:
SomeReturnType callYourFunction(YourEnumType e);
Вот и все, никаких переплетов;)