Listas de argumentos variáveis
As declarações de função nas quais o último membro da argument-declaration-list são as reticências (...) e podem criar um número variável de argumentos. Nesses casos, o C++ fornece verificação de tipo apenas para os argumentos explicitamente declarados. Você pode usar listas de argumentos variáveis quando precisar criar uma função tão geral que mesmo o número e os tipos de argumentos possam variar. A família de funções printf é um exemplo de funções que usam listas de argumentos variáveis.
Para acessar argumentos após a declaração, use as macros contidos no arquivo incluso de padrão STDARG.H, conforme descrito em Funções com listas de argumentos variáveis.
Específico da Microsoft
O Microsoft C++ permite que as reticências sejam especificadas como um argumento se as reticências forem o último argumento e se forem precedidas por uma vírgula. Consequentemente, a declaração int Func( int i, ... ); é válida, mas int Func( int i ... ); não é.
FIM de Específico da Microsoft
A declaração de uma função que pega um número variável de argumentos que requer pelo menos um argumento de espaço reservado, mesmo se não for usado. Se esse argumento de espaço reservado não for fornecido, não há como acessar os argumentos restantes.
Quando os argumentos do tipo char são passados como argumentos variáveis, são convertidos para o tipo int. De maneira similar, quando os argumentos do tipo float são passados como argumentos variáveis, eles são convertidos para o tipo double. Os argumentos de outros tipos estão sujeitos às promoções integral e de ponto flutuante comuns. Consulte Promoções integrais para obter mais informações.