- std[meta namespace]
- cstdarg[meta header]
- type-alias[meta id-type]
namespace std {
using va_list = unspecified;
}- unspecified[italic]
va_listは、関数が受け取った可変個数の引数にアクセスするために必要な情報を保持する型である。
va_startマクロによって初期化し、va_argマクロで各引数を順に取り出し、va_endマクロで後始末を行う。
#include <cstdarg>
#include <iostream>
// count個のint引数の合計を求める
int sum(int count, ...)
{
std::va_list args;
va_start(args, count);
int total = 0;
for (int i = 0; i < count; ++i) {
total += va_arg(args, int);
}
va_end(args);
return total;
}
int main()
{
std::cout << sum(3, 10, 20, 30) << std::endl;
}- std::va_list[color ff0000]
- va_start[link va_start.md]
- va_arg[link va_arg.md]
- va_end[link va_end.md]
60