今日、私はひどい問題に遭遇しました。私は、可変個引数テンプレートを使用するクラスでフレームワーク全体に取り組んできました。そして、私が一緒に働いている人は、可変個引数テンプレートをまだサポートしていないビジュアル スタジオを使用していることがわかりました。
マクロを使って機能をシームレスに移植しようとしましたが、長い作業の結果、このままでは不可能のようです。問題は、テンプレートのパラメーターの数が 0 から 4 (または可変個のテンプレートでは無限大) まで変化する可能性があることです。
私のマクロは作成され、次のようなものに費やされますが:
template<>
Signal<void ()>
{
// My class
};
また
template<typename param1>
Signal<void (param1)>
{
// My class
};
しかし問題は、これが gcc では機能しないように見えることです (したがって、vc でも機能しないと仮定します)。
ヘッダーにはエラーは表示されませんが、次のようにクラスをインスタンス化しようとすると:
Signal<> mySignal;
次のようなエラーが発生します。
error: wrong number of template arguments (0, should be 1)
この件に関する情報が見つからないので、少なくとも私が試みていることが可能かどうか知りたいですか? または、マイクロソフトは可変個引数テンプレートが十分に重要であるとは考えていないため、本当に何百行ものコードを再度作成する必要がある場合は??