J'ai remarqué que GCC et MSVC sont tous deux satisfaits du code suivant :
#include <iostream>
void foo(...);
int main()
{
foo();
}
void foo(...)
{
std::cout << "foo\n";
}
Plus précisément, le code a été exécuté sous GCC 6.2.0 et Visual Studio 2015.
Je sais que le C nécessite au moins un nommé précédant l'ellipse, qui permet de traiter un nombre quelconque d'arguments à l'aide d'outils spécialisés. va_start
, va_args
y va_end
macros de <stdarg.h>
(ici <cstdarg>
). Sinon, il ne sera même pas compilé.
Est-ce que le C++ a un traitement spécial pour la forme "ellipse pure" ou est-ce qu'elle ne convient pas pour récupérer les arguments, c'est-à-dire qu'elle est autorisée, mais complètement impraticable ?