type_info
プロパティ マップでプロパティのタイプを定義するオブジェクトを取得しました。type_info オブジェクトによって定義された型でパラメータ化されたコード (例: cin からの値の読み取り) を実行したいと思います。テンプレート関数、つまり次のようなものである可能性があります。
template<typename T>
void do_something()
{
T a; cin >> a;
}
次に、コードの他の部分でそれを呼び出したいと思います:
const type_info &type_description = foo.get_type_of_something();
do_some_magic(do_something, type_description);
で記述される型に特化したdo_some_magic
関数を探しています。テンプレート関数は何らかの構造でラップできますが、問題ありません。do_something
type_descriptor
もちろん、事前に定義された型の有限セットに対してのみ可能です (特殊化はコンパイル時にそれぞれに対して生成される必要があるため)。
1 つの方法は、チェーンなどを作成することですif(type_descriptor==typeid(int)) /*...*/ else if(type_descriptor==...
が、これはあまりきれいな解決策ではありません (imo)。
もっとクリーンなソリューションが存在するかどうか疑問に思っていますか? それとも、いくつかのライブラリ(できれば「ブースト」)がそのようなメカニズムをすでに実装しているのでしょうか?