我正在尝试创建和存储 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 实现的赋值是私有的。
是否有资源告诉何时执行整数促销?
谢谢