Trailing dots (...) within function argument list in C++
<p>I was looking into some C++ source code files which perform some parsing when I came across 
a rather curious looking function as shown below along with the Doxygen documentation.</p>

<p>My question is, in the arguments of the function ERROR what do the trailing dots (...)
mean? This is the first time I am seeing this being used.</p>

<pre><code>/**
 * Create an error with given message id and fill in given string in message
 * @PARAM row   row where the error occured (0 to neglect)
 * @PARAM col   column where the error occured (0 to neglect)
 * @PARAM id    id of the message
 * @PARAM arg   an argument which will be filled in in the message,
 *              replacing %s, %i, %f, %c
 */
Error::Error(const int row, const int col, const int id, ...)
: err_row(row), err_col(col), err_id(id)
{
    //sprintf(msg, msgdesc(id));
    const char* msg_desc = msgdesc(id);

    va_list args;
    va_start(args, msg_desc);
    vsnprintf(msg, sizeof(msg)-1, msg_desc, args);
    msg[sizeof(msg)-1] = '\0';
    va_end(args);
}
</code></pre>

<p>The <code>gcc</code> compiler which I use throws me the following warning (among others concerning other files)</p>

<pre><code>parser_error.cpp: In constructor ‘Error::Error(int, int, int, ...)’:
parser_error.cpp:30: warning: second parameter of ‘va_start’ not last named argument
</code></pre>
