テンプレートクラスがあるとします:
template<class T>
class Foo
{
void save(File& f);
/* load */ Foo(const File& f);
...
}
Foo のバイナリ ファイル形式があります。Foo::save はファイルに保存し、Foo(File) コンストラクターはそれをファイルから読み込みます。
保存するときに T の型をヘッダーに書き込み、ロードするときに、コンストラクターで使用される T がファイルの型と同じであることを確認したい。
この型コードを生成するにはどうすればよいですか?
(たとえば、typeid(T).name() を SHA することができます。ただし、これはプログラムの呼び出し間で変わる可能性があります。より良い方法はありますか?)