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 実装には、プライベートとしての割り当てがあります。
整数の昇格がいつ実行されるかを示すリソースはありますか?
ありがとう