
What is the correct syntax for creating a boost::bimap<SDLKey, boost::function<void(boost::shared_ptr<Player>, bool)> >?
The code above does not compile, generating long cryptic template-related errors.
Using an std::map<SDLKey, boost::function<void(boost::shared_ptr<Player>, bool)> > works, however. Yes, but does std::map<boost::function<void(boost::shared_ptr<Player>, bool)>, SDLKey> also compile? Both must be true to get bimap functionality. Yes, std::map<boost::function<void(boost::shared_ptr<Player>, bool>, SDLKey> also compiles.
Did you try insert()-ing something into such a map? I think you'll find you get the same errors if you try that, as the ones you're getting with bimap. The bottom line is, boost::function is not LessThanComparable, so if you want to use it as the key of a map (or one of the keys of a bimap), you'll have to define your own comparison for it. Regards, Nate