我正在編寫幫助函數,它將DBus
屬性值轉換爲std類型。爲此,要轉換少數類型,我需要創建一個std::map
。該地圖將代表DICT
類型DBus
。 DBUS
中的DICT類型可以具有任何類型作爲鍵和任何類型的值。現在,我需要將其轉換爲std::map
。我正在考慮使用std::map<boost::any, boost::any>
代替DICT
類型的DBUS
。但是,我必須在將所有類型的DBUS
轉換爲std類型之後檢查類型。但它看起來像我不能做到這一點,如下程序失敗(顯然):類型檢查密鑰的std :: map和/或類型爲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;
}
我正在尋找更好的方式來做到這一點。