Compiler Error C2394

'your_type::operator'op'" : CLR operator not valid. At least one parameter must be of the following types: 'T^', 'T^%', 'T^&', where T = 'your_type'

An operator in a managed type did not have at least one parameter whose type is the same as the type of the operator return value.

The following sample generates C2394:

// C2394.cpp
// compile with: /clr /c
ref struct Y {
   static Y^ operator -(int i, char c);   // C2394

   // OK
   static Y^ operator -(Y^ hY, char c);
   // or
   static Y^ operator -(int i, Y^& rhY);

Community Additions