Erreur du compilateur C2688

'C2 ::fgrv' : les retours covariants avec l’héritage multiple ou virtuel non pris en charge pour les fonctions varargs

Les types de retour covariants ne sont pas pris en charge dans Visual C++ lorsqu’une fonction contient des arguments de variable.

Pour résoudre cette erreur, définissez vos fonctions afin qu’elles n’utilisent pas d’arguments de variable ou rendent les valeurs de retour identiques pour toutes les fonctions virtuelles.

L’exemple suivant génère l’erreur C2688 :

// C2688.cpp
struct G1 {};
struct G2 {};
struct G3 : G1, G2 {};
struct G4 {};
struct G5 {};
struct G6 : G4, G5 {};
struct G7 : G3, G6 {};

struct C1 {
   virtual G4& fgrv(int,...);
};

struct C2 : C1 {
   virtual G7& fgrv(int,...);   // C2688, does not return G4&
};