#include #include "boost/fusion/include/map.hpp" #include "boost/fusion/include/pair.hpp" #include "boost/fusion/include/at_key.hpp" using namespace boost; class MappedType { public: MappedType() : m_value(1234.0) {} double m_value; }; class ClassA { public: struct key0; struct key1; void Print() const { printf("MappedType 0 : %g\nMappedType 1 : %g\n", fusion::at_key(m_map).m_value, fusion::at_key(m_map).m_value); } fusion::map< fusion::pair, fusion::pair > m_map; }; int main() { ClassA object1; std::pair pair0(0, object1); printf("object copy construction (not broken)\n"); pair0.second.Print(); std::pair pair1(1, ClassA()); printf("in place construction (broken for c++11)\n"); pair1.second.Print(); return 0; }