Namespaces
Variants

va_copy

From cppreference.net
Utilities library
Défini dans l'en-tête <cstdarg>
void va_copy ( std :: va_list dest, std :: va_list src ) ;
(depuis C++11)

La macro va_copy copie src vers dest .

va_end doit être appelé sur dest avant que la fonction ne retourne ou toute réinitialisation ultérieure de dest (via des appels à va_start ou va_copy ).

Table des matières

Paramètres

dest - une instance du type va_list à initialiser
src - le va_list source qui sera utilisé pour initialiser dest

Valeur développée

(aucun)

Exemple

#include <cmath>
#include <cstdarg>
#include <iostream>
double sample_stddev(int count, ...) 
{
    double sum = 0;
    std::va_list args1;
    va_start(args1, count);
    std::va_list args2;
    va_copy(args2, args1);
    for (int i = 0; i < count; ++i)
    {
        double num = va_arg(args1, double);
        sum += num;
    }
    va_end(args1);
    double mean = sum / count;
    double sum_sq_diff = 0;
    for (int i = 0; i < count; ++i)
    {
        double num = va_arg(args2, double);
        sum_sq_diff += (num - mean) * (num - mean);
    }
    va_end(args2);
    return std::sqrt(sum_sq_diff / count);
}
int main() 
{
    std::cout << sample_stddev(4, 25.0, 27.3, 26.9, 25.7) << '\n';
}

Sortie :

0.920258

Voir aussi

permet d'accéder aux arguments des fonctions variadiques
(macro de fonction)
accède au prochain argument de fonction variadique
(macro de fonction)
termine le parcours des arguments des fonctions variadiques
(macro de fonction)
Documentation C pour va_copy