次の状況を考慮してください。
関数へのポインタは生のポインタとして与えられます
void * function_pointer;
関数に渡される引数は共用体型のベクトルとして利用できます。
union Types {
void *ptr;
float *ptr_float;
double *ptr_double;
float fl;
int in;
double db;
bool bl;
};
std::vector<Types> arguments;
したがって、関数の署名はプログラム状態でのみ使用できます (コンパイル時に認識されるのではなく)。
この呼び出しを行うための推奨される方法 (C++ 11) は何ですか?
引数ベクトルを次のように変更することが可能です。
std::vector< std::pair<int,Types> > arguments;
ペアの最初の要素は、引数の型を明確に識別します。
技術的には、署名は 2 番目の形式でのみ与えられます。最初のフォームだけでは、署名がどのようなものかわかりません。