The information in this article applies to:
SYMPTOMSWhen you attempt to instantiate an STL component for a class, a C2784 error occurs, complaining that a relational operator (such as operator!= or operator>) is not defined. This in spite of including "using namespace std::rel_ops;", and defining operator< and operator== for the class. CAUSEThe problem is caused by the nested namespace std::rel_ops. The compiler is unable to do a proper name lookup for the generic relational operators '!=', '<=', '>', '>=', which are defined in the namespace std::rel_ops and are referenced by several STL components. RESOLUTIONThe easiest workaround is to add a using declaration for the specific operator the compiler is complaining about. See the sections compiled conditionally upon WORKAROUND in the sample code below. STATUSMicrosoft has confirmed this to be a problem in the Microsoft products listed
at the beginning of this article.This problem was corrected in Microsoft Visual C++ version 6.0. MORE INFORMATION
The following sample demonstrates the problem.
Sample Code
Additional query words:
Keywords : kbtool kbVC500bug kbVC600fix |
Last Reviewed: March 27, 1999 © 2000 Microsoft Corporation. All rights reserved. Terms of Use. |