任意の型のパラメーターを受け入れる関数があります。したがって、テンプレートを使用します。
template <typename T>
void Function(T Parameter);
関数は関数を呼び出します。私の実際のアプリケーションでは、文字列キーを持つコールバックのマップがありますが、それはこの質問には関係ありません。コールバックは、戻り値の型がvoidの関数ポインターである必要がありますが、パラメーターの型は任意です。
void* Callback;
template <typename T>
void Function(T Parameter)
{
(function<void(T))Callback(Parameter);
}
コールバックが正しいタイプであると仮定すると、これは次のように機能するはずです。
Function<int>(42);
// should result in...
(function<void(int))Callback(42);
しかし、場合によってはvoid
、パラメーターとして渡したいことがあります。
Function<void>(void);
// should result in...
(function<void(void)>Callback(void);
ご覧のとおり、何も提供しないかvoid
、パラメーターとして提供する必要があります。void
しかし、引数として渡すことはできません。型名が正しくないというエラーがあります。
void
関数の引数として渡すにはどうすればよいですか?