0

任意の種類の引数(一般引数)をいくつでも取ることができる関数があります。

va_argを使用したくないので、可変個引数テンプレートの引数はコンパイラでサポートされていません。Boostライブラリを使用しています。

誰かがこれを実装する方法を私に提案できますか?

4

2 に答える 2

4

va_args可変個引数テンプレートをサポートするまともな最近のコンパイラ(無料のオープンソースGCCClangコンパイラなど)を使用したくない場合、または使用したくない場合は、それを実現する方法はありません。引数の数に上限を設けることができる場合は、引数にBoost.Preprocessor0をとる関数を定義するために使用できNます。

于 2013-03-26T08:50:52.750 に答える
0

voidポインタの配列を渡すことで、チートすることもできます。

void func(void**args);

最後がNullであるか、ベクトルを渡す必要があります。

void func(std::vector<void*> args);

しかし、APIを悪用し、追跡不可能なランタイムエラーにさらしているため、適切なコードレビューを行うには、コードを削除して適切に再設計する必要があります。

于 2013-03-26T13:08:55.910 に答える