template struct Converter_std_map { static PyObject* toPython(ValueHolder holder) { PyObject* result = PyDict_New(); typedef typename StdMap::iterator IT; IT it; for (it = holder.value.begin(); it != holder.value.end(); it++) { ValueHolder h_key((*it).first); ValueHolder h_val((*it).second); PyDict_SetItem(result, Converter::toPython(h_key), Converter::toPython(h_val)); } return result; } static StdMap toCpp(PyObject* pyobj) { StdMap result; PyObject* key; PyObject* value; Py_ssize_t pos = 0; Py_INCREF(pyobj); while (PyDict_Next(pyobj, &pos, &key, &value)) { result.insert(typename StdMap::value_type( Converter::toCpp(key), Converter::toCpp(value))); } Py_DECREF(pyobj); return result; } }; template struct Converter > : Converter_std_map > {};