Ошибка компилятора C2688

"C2::fgrv": ковариант возвращается с несколькими или виртуальными наследованием, которые не поддерживаются для функций varargs

Типы возвращаемых значений Covariant не поддерживаются в Visual C++, если функция содержит аргументы переменных.

Чтобы устранить эту ошибку, определите функции таким образом, чтобы они не использовали аргументы переменных или возвращали значения одинаково для всех виртуальных функций.

Следующий пример приводит к возникновению ошибки 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&
};