yaml-cpp La forma más fácil de iterar a través de un mapa con valores no definidos

Me gustaría obtener cada nodo en un mapa sin conocer las claves.

Mi YAML se ve así:

characterType :
 type1 :
  attribute1 : something
  attribute2 : something
 type2 :
  attribute1 : something
  attribute2 : something

No sé cuántos "tipos" se declararán o cuál será el nombre de esas claves. Por eso estoy tratando de recorrer el mapa.

struct CharacterType{
  std::string attribute1;
  std::string attribute2;
};

namespace YAML{
  template<>
  struct convert<CharacterType>{
    static bool decode(const Node& node, CharacterType& cType){ 
       cType.attribute1 = node["attribute1"].as<std::string>();
       cType.attribute2 = node["attribute2"].as<std::string>();
       return true;
    }
  };
}

---------------------
std::vector<CharacterType> cTypeList;

for(YAML::const_iterator it=node["characterType"].begin(); it != node["characterType"].end(); ++it){
   cTypeList.push_back(it->as<CharacterType>());
}

El código anterior no da ningún problema al compilar, pero en el momento de la ejecución recibo este error: terminar llamado después de lanzar una instancia deYAML::TypedBadConversion<CharacterType>

También he intentado usar un subíndice en lugar del iterador, obteniendo el mismo error.

Estoy seguro de que estoy haciendo algo mal, simplemente no puedo verlo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta