unary 'operator' : 'type' does not define this operator or a conversion to a type acceptable to the predefined operator
The specified operator could not be used in its predefined form. To use the operator you must overload it for the apropriate type, or define a conversion to a type for which the operator is defined. If you’ve encountered this error on code which compiled with an earlier version of Visual C++, please read Technote: Improved Conformance to ANSI C++ for more information.
The following is an example of this error:
class C
{
public:
C();
} c;
class D
{
public:
D();
operator !();
} d;
void main()
{
!c; // error
!d; // OK, operator !() defined
}