我試圖創建和存儲TYPE_INFO對象:如何使用的typeid來存儲TYPE_INFO對象
#include <typeinfo>
int i;
type_info x = typeid(i);
,併產生一個錯誤信息。有什麼方法可以存儲type_info對象嗎?
這個背後的歷史是,我試圖爲各種C++整數類型生成測試用例;對它們進行算術運算並確定中間結果是否被提升到下一個最大整數類型或被截斷。那就是:
unsigned char x = 257;
unsigned char y = 257;
// is (x + y) == 514 or 256?
而決定做對靜態數據結構的類型檢查,例如:
int x = <value>;
int y = <value>;
static type_info def = { typeid(bool)
, typeid(char), typeid(unsigned char)
, typeid(short), typeid(unsigned short)
, typeid(long), typeid(unsigned long)
};
type_info obj = typeid(x + y);
for(int i = 0; i < sizeof(def)/sizeof(def[0]); i++) if (obj == def[i]); break;
總之,不能沒有能夠存儲TYPE_INFO結構完成,我仍然想了解整數促銷活動。
你可以創建一個type_info對象嗎? gcc 4.5.3實現具有私有分配。
整數升級執行時是否有資源告知?
感謝
你可能更適合使用['std :: numeric_limits'](http://en.cppreference.com/w/cpp/ types/numeric_limits),因爲它提供了您正在測試的信息。只是一個想法。 –