Updated My Variant Map to have Variant Keys

Professor.jpg

This morning I started on some major improvements in my client to the cross-platform, load-balancing, resilient messaging system that has been built in-house for the next generation of trading systems at The Shop. The messaging broker is built in erlang by a guy that's far too smart for the locals - really pretty impressive guy. Anyway, the protocol in C++ is not as elegant as in erlang, but to be fair, it's pretty good for C++, as I've written a few in my days.

So I needed to start by retrofitting my variant's map structure with the concept that keys can be something more complex than STL std::string values - they needed to be variants themselves. This is just going to make the speed a little less, but it makes it much more like the Java-based data services which benefit from the existence of Object - something I do so wish C++ had, but I can see both sides of that now.

I modified the map to have variant keys, and then updated all the tests to work with the new key type. To be fair, the variant can hold an STL std::string, so most of the tests worked anyway, I just had to add a few to make sure I hadn't botched something really obvious.

So far, so good.