я заметил, что оба GCC и MSVC довольны следующий код:функция VARIADIC без имени аргумента
#include <iostream>
void foo(...);
int main()
{
foo();
}
void foo(...)
{
std::cout << "foo\n";
}
Более конкретно, код был запущен под GCC 6.2.0 и Visual Studio 2015.
Я знаю, что C требует, по крайней мере, один имя параметра предшествующего многоточие, который позволяет обрабатывать любое количество аргументов с использованием специализированных va_start
, va_args
и va_end
макросов из <stdarg.h>
(здесь <cstdarg>
) заголовка. В противном случае он даже не будет компилироваться.
Есть ли у C++ специальная обработка для формы «чистого эллипса» или она не подходит для извлечения аргументов, то есть разрешена, но совершенно непрактична?
Когда вы говорите о компиляторах, укажите также * версии *. – Nawaz
@Nawaz: Спасибо за улучшение вопроса. –
Довольно четко сформулированный вопрос, но -1, потому что это ясно сказано в документации cppreference для вариативных аргументов, и мне непонятно, почему вы просто не прочитали его. Должно быть, это был самый первый этап в ваших исследованиях. –