컴파일러 경고(수준 1) C4358
'operator': 결합된 대리자의 반환 형식이 'void'가 아닙니다. 반환된 값이 정의되지 않았습니다.
두 대리자가 결합되었고 반환 값이 void가 아닙니다. void가 아닌 반환 값을 가진 두 대리자를 결합하면 대리자의 반환 값이 사용되는 경우 컴파일러에서 적절한 할당을 수행할 수 없습니다.
다음 샘플에서는 C4358을 생성합니다.
// 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
}