FIX: C1001 in Compiler File MSC1.CPP at Line 1089
ID: Q155386
|
The information in this article applies to:
-
The C/C++ Compiler (CL.EXE), included with:
-
Microsoft Visual C++, 32-bit Editions, version 4.2
SYMPTOMS
When defining a template function and a nontemplate function of the same
name such that the nontemplate version is defined within a namespace, you
may encounter the following error:
test.cpp(28) : fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'msc1.cpp', line 1089)
RESOLUTION
There are three ways to work around this problem:
- Change the name of one of the functions involved.
-or-
- Move the using directive to local function scope. See the sample code
below.
-or-
- Instead of a using directive, use the scope resolution operator to
reference objects in the namespace. See the sample code below.
STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed
at the beginning of this article. This bug was corrected in Visual C++
version 5.0.
MORE INFORMATION
Sample Code
/* Compile options needed: None
*/
template<class T> int test1( T x)
{
return 1;
}
namespace A{
int test1(int)
{
return 1;
};
}
int test2()
{
return test1(1);
}
using namespace A; // comment out this line for workarounds 2 & 3.
void main()
{
// using namespace A; // uncomment this line for workaround 2
test1(1);
// A::test1(1); // uncomment this line for workaround 3
}
Additional query words:
kbVC420bug
Keywords : kbCompiler kbCPPonly kbVC kbVC500fix
Version : 4.2
Platform : NT WINDOWS
Issue type : kbbug