Say I'm coding up a preferences/hotkey config routine for my game. I can convert strings like "A" to sf::Keyboard::A, or "MouseMiddle" to sf::Mouse::Middle. I can then in my functions associate "Fire" to {type=Mouse,key=sf::Mouse::Middle} and in my function easily call either sf::Mouse::isButtonPressed(my::HotKey::Fire["key"]) based on Fire being assigned to the enum value with the type set to Mouse.
I cannot do that (or can I?) with Joystick Buttons as I have to pass 2 values Joystick number and Button number to sf::Joystick::isButtonPressed(unsigned int joystick, unsigned int button). I mean if I could assign my::HotKey::Fire["key"] to be {0,0} and pass Fire["key"] to sf::Joystick::isButtonPressed(my::HotKey::Fire["key"]), then I guess my request would make less sense... as I said I am an amateur at this. Maybe there's already a clean way to do this and I need to go find a nice class to take or book to read..