Compilerwarnung (Ebene 1) C4358

"Operator": Die Rückgabeart der kombinierten Stellvertretungen ist nicht "void"; zurückgegebener Wert ist nicht definiert.

Zwei Stellvertretungen wurden kombiniert, und der Rückgabewert ist nicht ungültig. Wenn zwei Stellvertretungen mit nicht ungültigen Rückgabewerten kombiniert werden, kann der Compiler keine ordnungsgemäße Zuweisung ausführen, wenn der Rückgabewert des Delegaten verwendet wird.

Im folgenden Beispiel wird C4358 generiert:

// C4358.cpp
// compile with: /clr /W1
delegate int D();
delegate void E();

ref class X {
   int i;
public:
   X(int ii) : i(ii) {}
   int f() {
      return i;
   }
};

ref class Y {
   int i;
public:
   Y() {}
   void g() {}
};

int main() {
   D^ d = gcnew D(gcnew X(1), &X::f);
   D^ d2 = gcnew D(gcnew X(2), &X::f);

   d += d2;   // C4358
   int j = d();   // return value indeterminate

   E^ e = gcnew E(gcnew Y, &Y::g);
   E^ e2 = gcnew E(gcnew Y, &Y::g);
   e += e2;   // OK
}