va_argsを使用して、C++ で可変引数を試しています。このアイデアは便利で、実際に params 機能を介して C# でよく使用したものです。私を苛立たせているのは、上記の va_args に関する次の抜粋です。
また、va_arg は、取得した引数が関数に渡された最後の引数であるかどうか (または、そのリストの末尾を過ぎた要素であるかどうか) を判断しないことに注意してください。
関数に渡される可変引数の数を関数自体からプログラムで決定する方法がないとは信じがたいです。次のようなことを実行したいと思います。
void fcn(int arg1 ...)
{
va_list argList;
va_start(argList, arg1);
int numRemainingParams = //function that returns number of remaining parameters
for (int i=0; i<numRemainingParams; ++i)
{
//do stuff with params
}
va_end(argList);
}
繰り返しますが、上記のドキュメントでは、取得した引数がリストの最後かどうかを va_arg が判断しないことを示唆しています。しかし、この情報は何らかの方法でアクセスできる必要があると思います。
これを達成する標準的な方法はありますか?