FIX: C1001 in Compiler File MSC1.CPP at Line 1089 (155386)



The information in this article applies to:

  • Microsoft Visual C++, 32-bit Enterprise Edition 4.2
  • Microsoft Visual C++, 32-bit Professional Edition 4.2

This article was previously published under Q155386

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:

  1. Change the name of one of the functions involved. -or-

  2. Move the using directive to local function scope. See the sample code below. -or-

  3. 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
   }
				

Modification Type:MinorLast Reviewed:7/5/2005
Keywords:kbbug kbCompiler kbCPPonly kbfix kbVC500fix KB155386