BUG: C2065: Undeclared Identifier Creating a STL Function ObjectLast reviewed: December 1, 1997Article ID: Q177431 |
The information in this article applies to:
SYMPTOMSCreating the STL function object “binder2nd” causes the compiler to generate the following error C2065:
'identifier' : undeclared identifierIt is the “std::multiples<int>(): line that causes the namespace to be lost.
RESOLUTIONOne of the following methods can be used to work around this problem:
STATUSMicrosoft has confirmed this to be a bug in the Microsoft product listed at the beginning of this article. We are researching this bug and will post new information here in the Microsoft Knowledge Base as it becomes available.
MORE INFORMATIONThe following sample demonstrates the problem and the first workaround.
Sample Code
/*
* Compiler Options: /GX
*/
#include <algorithm>
#include <functional>
#include <iostream>
#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<int> >
times_two(std::multiplies<int>(), 2);
#endif
#ifdef WORKAROUND
binder2nd< multiplies<int> > times_two(multiplies<int>(), 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.
Sample Code
/*
* Compiler Options: /GX
*/
#include <algorithm>
#include <functional>
#include <iostream>
#define BUG
//Workaround: Comment the line above.
//Uncomment the line below.
//#define WORKAROUND
int main()
{
#ifdef BUG
std::binder2nd< std::multiplies<int> >
times_two(std::multiplies<int>(), 2);
#endif
#ifdef WORKAROUND
std::multiplies<int> mi ;
std::binder2nd< std::multiplies<int> > times_two(mi, 2);
#endif
int n = times_two(4) ;
std::cout << "n = " << n << std::endl ;
return 0 ;
}
REFERENCESPlease see the following help topics in the Microsoft Visual C++ online documentation for more information on ”binder2nd”:
TITLE: binder2nd URL: mk:@ivt:vclang/STDLIBBLD/FUNCTIO2_BINDER2ND.HTM TITLE: Visual C++ 4.2 Standard Template Library Tutorial URL: mk:@ivt:tatech/F1/DB/S4249.HTM#sec58 Keywords : CPPIss CPPLngIss STLIss vcbuglist500 kbbuglist Version : WINNT:5.0 Platform : winnt Issue type : kbbug Solution Type : kbfix |
================================================================================
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |