Microsoft KB Archive/177431

= FIX: C2065: Undeclared Identifier Creating a STL Function Object =

Article ID: 177431

Article Last Modified on 10/24/2003

-

APPLIES TO


 * Microsoft Visual C++ 5.0 Enterprise Edition
 * Microsoft Visual C++ 5.0 Professional Edition

-



This article was previously published under Q177431



SYMPTOMS
Creating the STL function object "binder2nd" causes the compiler to generate the following error C2065:

'identifier' : undeclared identifier

It is the std::multiples : line that causes the namespace to be lost.



RESOLUTION
Use one of the following methods to work around this problem:


 * Use the "using namespace" directive instead of qualifying the function objects.
 * Pre-declare an instance of std::multiplies to solve the problem.



STATUS
Microsoft has confirmed this to be a bug in the Microsoft product listed at the beginning of this article. This problem was corrected in Visual C++ version 6.0 for Windows.



MORE INFORMATION
The following sample demonstrates the problem and the first workaround: /*  * Compiler Options: /GX */

#include #include #include

#define BUG //Workaround: Comment the line above. //Uncomment the line below. //#define WORKAROUND

#ifdef WORKAROUND using namespace std ; #endif

int main {

#ifdef BUG

std::binder2nd< std::multiplies > times_two(std::multiplies, 2); #endif #ifdef WORKAROUND binder2nd< multiplies > times_two(multiplies, 2); #endif

int n = times_two(4) ; std::cout << "n = " << n << std::endl ; return 0 ; }

The following sample demonstrates the problem and the second workaround: /*  * Compiler Options: /GX */

#include #include #include

#define BUG //Workaround: Comment the line above. //Uncomment the line below. //#define WORKAROUND

int main {

#ifdef BUG

std::binder2nd< std::multiplies > times_two(std::multiplies, 2);

#endif

#ifdef WORKAROUND

std::multiplies mi ; std::binder2nd< std::multiplies > times_two(mi, 2);

#endif

int n = times_two(4) ; std::cout << "n = " << n << std::endl ; return 0 ; }

Keywords: kbbug kbfix kbvc600fix KB177431

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.