J'écris des fonctions auxiliaires qui convertissent les valeurs de propriétés DBus
en types std. Pour cela, pour convertir peu de type, j'ai besoin de créer un std::map
. La carte représentera DICT
tapez DBus
. Le type DICT dans DBUS
peut avoir n'importe quel type comme une clé et n'importe quel type comme valeur. Maintenant, je dois le convertir en std::map
. Je pense à utiliser std::map<boost::any, boost::any>
pour DICT
type de DBUS
. Cependant, je dois vérifier le type après la conversion de tous les types de DBUS
en types std. Mais il semble que je ne peux pas le faire comme le programme échoue ci-dessous (évidemment):Vérification de type de la commande std :: map des clés et/ou des valeurs de type boost :: any?
#include <iostream>
#include <typeinfo>
#include <boost/any.hpp>
#include <map>
#include <string>
int main()
{
std::map<std::string, boost::any> m;
boost::any key = 2;
boost::any value = std::string("Hello");
m.insert(std::make_pair(std::string("Key"), value));
if (typeid(m) == typeid(std::map<std::string, std::string>))
std::cout << "Yes" << std::endl;
return 0;
}
Je cherche une meilleure façon de le faire.